Verktyg för operativsystem¶
-
PyObject *PyOS_FSPath(PyObject *path)¶
- Returnera värde: Ny referens. En del av Stabil ABI sedan version 3.6.
Returnerar filsystemets representation för path. Om objektet är ett
str
- ellerbytes
-objekt returneras en ny strong reference. Om objektet implementerar gränssnittetos.PathLike
, returneras__fspath__()
så länge det är ettstr
ellerbytes
objekt. Annars genererasTypeError
ochNULL
returneras.Tillagd i version 3.6.
-
int Py_FdIsInteractive(FILE *fp, const char *filename)¶
Returnerar true (icke-noll) om standard I/O-filen fp med namnet filnamn anses vara interaktiv. Detta är fallet för filer för vilka
isatty(fileno(fp))
är true. OmPyConfig.interactive
är icke-noll, returnerar denna funktion också true om pekaren filnamn ärNULL
eller om namnet är lika med en av strängarna'<stdin>'
eller'???'
.Denna funktion får inte anropas innan Python har initialiserats.
-
void PyOS_BeforeFork()¶
- En del av Stabil ABI on platforms with fork() sedan version 3.7.
Funktion för att förbereda ett internt tillstånd före en processgaffel. Denna funktion bör anropas innan
fork()
eller någon liknande funktion som klonar den aktuella processen anropas. Endast tillgänglig på system därfork()
är definierad.Varning
C
fork()
-anropet bör endast göras från ”main”-tråden (av ”main”-tolken). Detsamma gäller förPyOS_BeforeFork()
.Tillagd i version 3.7.
-
void PyOS_AfterFork_Parent()¶
- En del av Stabil ABI on platforms with fork() sedan version 3.7.
Funktion för att uppdatera något internt tillstånd efter en processgaffel. Denna funktion bör anropas från den överordnade processen efter anrop av
fork()
eller någon liknande funktion som klonar den aktuella processen, oavsett om processkloningen lyckades eller inte. Endast tillgängligt på system därfork()
är definierad.Varning
C
fork()
-anropet bör endast göras från ”main”-tråden (av ”main”-tolken). Detsamma gäller förPyOS_AfterFork_Parent()
.Tillagd i version 3.7.
-
void PyOS_AfterFork_Child()¶
- En del av Stabil ABI on platforms with fork() sedan version 3.7.
Funktion för att uppdatera tolkens interna tillstånd efter en processförgrening. Denna funktion måste anropas från barnprocessen efter anrop av
fork()
, eller någon liknande funktion som klonar den aktuella processen, om det finns någon risk att processen kommer att anropa Python-tolken igen. Endast tillgängligt på system därfork()
är definierad.Varning
C
fork()
-anropet bör endast göras från ”main”-tråden (av ”main”-tolken). Detsamma gäller förPyOS_AfterFork_Child()
.Tillagd i version 3.7.
Se även
os.register_at_fork()
tillåter registrering av anpassade Python-funktioner som ska anropas avPyOS_BeforeFork()
,PyOS_AfterFork_Parent()
ochPyOS_AfterFork_Child()
.
-
void PyOS_AfterFork()¶
- En del av Stabil ABI on platforms with fork().
Funktion för att uppdatera vissa interna tillstånd efter en processgaffel; denna bör anropas i den nya processen om Python-tolken kommer att fortsätta att användas. Om en ny körbar fil laddas in i den nya processen behöver denna funktion inte anropas.
Föråldrad sedan version 3.7: Denna funktion ersätts av
PyOS_AfterFork_Child()
.
-
int PyOS_CheckStack()¶
- En del av Stabil ABI on platforms with USE_STACKCHECK sedan version 3.7.
Returnerar true när tolken har slut på stackutrymme. Detta är en tillförlitlig kontroll, men är endast tillgänglig när
USE_STACKCHECK
är definierad (för närvarande på vissa versioner av Windows som använder Microsoft Visual C++-kompilatorn).USE_STACKCHECK
definieras automatiskt; du bör aldrig ändra definitionen i din egen kod.
-
typedef void (*PyOS_sighandler_t)(int)¶
- En del av Stabil ABI.
-
PyOS_sighandler_t PyOS_getsig(int i)¶
- En del av Stabil ABI.
Returnerar den aktuella signalhanteraren för signal i. Detta är ett tunt omslag runt antingen
sigaction()
ellersignal()
. Anropa inte dessa funktioner direkt!
-
PyOS_sighandler_t PyOS_setsig(int i, PyOS_sighandler_t h)¶
- En del av Stabil ABI.
Ställ in signalhanteraren för signal i till att vara h; returnera den gamla signalhanteraren. Detta är ett tunt omslag runt antingen
sigaction()
ellersignal()
. Anropa inte dessa funktioner direkt!
-
wchar_t *Py_DecodeLocale(const char *arg, size_t *size)¶
- En del av Stabil ABI sedan version 3.7.
Varning
Denna funktion bör inte anropas direkt: använd
PyConfig
API medPyConfig_SetBytesString()
funktionen som säkerställer att Python är förinitialiserat.Denna funktion får inte anropas innan Python är förinitialiserat och så att LC_CTYPE locale är korrekt konfigurerad: se
Py_PreInitialize()
funktionen.Avkodar en byte-sträng från filesystem encoding and error handler. Om felhanteraren är surrogateescape error handler, avkodas oavkodbara byte som tecken i intervallet U+DC80..U+DCFF; och om en byte-sekvens kan avkodas som ett surrogattecken, escapas byte-sekvensen med hjälp av felhanteraren surrogateescape istället för att avkodas.
Returnerar en pekare till en nyligen allokerad bred teckensträng, använd
PyMem_RawFree()
för att frigöra minnet. Om size inte ärNULL
, skriv antalet breda tecken exklusive nulltecknet till*size
Returnerar
NULL
vid avkodningsfel eller minnesallokeringsfel. Om size inte ärNULL
, sätts*size
till(size_t)-1
vid minnesfel eller sätts till(size_t)-2
vid avkodningsfel.Termen filesystem encoding and error handler väljs av
PyConfig_Read()
: sefilesystem_encoding
ochfilesystem_errors
-medlemmar avPyConfig
.Avkodningsfel ska aldrig inträffa, såvida det inte finns en bugg i C-biblioteket.
Använd funktionen
Py_EncodeLocale()
för att koda tillbaka teckensträngen till en byte-sträng.Se även
Funktionerna
PyUnicode_DecodeFSDefaultAndSize()
ochPyUnicode_DecodeLocaleAndSize()
.Tillagd i version 3.5.
Ändrad i version 3.7: Funktionen använder nu UTF-8-kodningen i Python UTF-8 Mode.
Ändrad i version 3.8: Funktionen använder nu UTF-8-kodning i Windows om
PyPreConfig.legacy_windows_fs_encoding
är noll;
-
char *Py_EncodeLocale(const wchar_t *text, size_t *error_pos)¶
- En del av Stabil ABI sedan version 3.7.
Kodar en bred teckensträng till filesystem encoding and error handler. Om felhanteraren är surrogateescape error handler, konverteras surrogattecken i intervallet U+DC80..U+DCFF till byte 0x80..0xFF.
Returnerar en pekare till en nyligen allokerad byte-sträng, använd
PyMem_Free()
för att frigöra minnet. ReturnerarNULL
vid felkodning eller fel i minnesallokering.Om error_pos inte är
NULL
, sätts*error_pos
till(size_t)-1
vid framgång, eller till indexet för det ogiltiga tecknet vid kodningsfel.Termen filesystem encoding and error handler väljs av
PyConfig_Read()
: sefilesystem_encoding
ochfilesystem_errors
-medlemmar avPyConfig
.Använd funktionen
Py_DecodeLocale()
för att avkoda bytessträngen tillbaka till en bred teckensträng.Varning
Denna funktion får inte anropas innan Python är förinitialiserat och så att LC_CTYPE locale är korrekt konfigurerad: se
Py_PreInitialize()
funktionen.Se även
Funktionerna
PyUnicode_EncodeFSDefault()
ochPyUnicode_EncodeLocale()
.Tillagd i version 3.5.
Ändrad i version 3.7: Funktionen använder nu UTF-8-kodningen i Python UTF-8 Mode.
Ändrad i version 3.8: Funktionen använder nu UTF-8-kodning i Windows om
PyPreConfig.legacy_windows_fs_encoding
är noll.
-
FILE *Py_fopen(PyObject *path, const char *mode)¶
Liknar
fopen()
, men path är ett Python-objekt och ett undantag sätts vid fel.path måste vara ett
str
-objekt, ettbytes
-objekt eller ett path-like object.Vid framgång returneras den nya filpekaren. Vid fel, sätt ett undantag och returnera
NULL
.Filen måste stängas med
Py_fclose()
istället för att direkt anropafclose()
.Filbeskrivaren skapas icke-ärftlig (PEP 446).
Den som anropar måste ha en attached thread state.
Tillagd i version 3.14.
-
int Py_fclose(FILE *file)¶
Stäng en fil som öppnades av
Py_fopen()
.Vid framgång returneras
0
. Vid fel returnerasEOF
ocherrno
sätts för att indikera felet. I båda fallen resulterar all ytterligare åtkomst (inklusive ett annat anrop tillPy_fclose()
) till strömmen i ett odefinierat beteende.Tillagd i version 3.14.
Systemfunktioner¶
Dessa är verktygsfunktioner som gör funktionalitet från sys
-modulen tillgänglig för C-kod. De arbetar alla med den aktuella tolktrådens sys
-modulens dict, som finns i den interna trådtillståndsstrukturen.
-
PyObject *PySys_GetObject(const char *name)¶
- Returnera värde: Lånad referens. En del av Stabil ABI.
Returnerar objektet namn från modulen
sys
ellerNULL
om det inte finns, utan att ange ett undantag.
-
int PySys_SetObject(const char *name, PyObject *v)¶
- En del av Stabil ABI.
Sätter name i modulen
sys
till v såvida inte v ärNULL
, i vilket fall namn tas bort från sys-modulen. Returnerar0
vid framgång,-1
vid fel.
-
void PySys_ResetWarnOptions()¶
- En del av Stabil ABI.
Återställer
sys.warnoptions
till en tom lista. Denna funktion kan anropas förePy_Initialize()
.Deprecated since version 3.13, will be removed in version 3.15: Rensa
sys.warnoptions
ochwarnings.filters
istället.
-
void PySys_WriteStdout(const char *format, ...)¶
- En del av Stabil ABI.
Skriv ut utdatasträngen som beskrivs av format till
sys.stdout
. Inga undantag görs, även om trunkering sker (se nedan).format bör begränsa den totala storleken på den formaterade utdatasträngen till 1000 byte eller mindre - efter 1000 byte trunkeras utdatasträngen. Detta innebär i synnerhet att inga obegränsade ”%s” format får förekomma; dessa bör begränsas med hjälp av ”%.<N>s” där <N> är ett decimaltal som beräknas så att <N> plus den maximala storleken på annan formaterad text inte överstiger 1000 byte. Se också upp för ”%f”, som kan skriva ut hundratals siffror för mycket stora tal.
Om ett problem uppstår, eller om
sys.stdout
inte är inställd, skrivs det formaterade meddelandet till den riktiga (C-nivå) stdout.
-
void PySys_WriteStderr(const char *format, ...)¶
- En del av Stabil ABI.
Som
PySys_WriteStdout()
, men skriv tillsys.stderr
eller stderr istället.
-
void PySys_FormatStdout(const char *format, ...)¶
- En del av Stabil ABI.
Funktion som liknar PySys_WriteStdout() men formaterar meddelandet med
PyUnicode_FromFormatV()
och trunkerar inte meddelandet till godtycklig längd.Tillagd i version 3.2.
-
void PySys_FormatStderr(const char *format, ...)¶
- En del av Stabil ABI.
Som
PySys_FormatStdout()
, men skriv tillsys.stderr
eller stderr istället.Tillagd i version 3.2.
-
PyObject *PySys_GetXOptions()¶
- Returnera värde: Lånad referens. En del av Stabil ABI sedan version 3.7.
Returnerar den aktuella ordlistan med
-X
-alternativ, på samma sätt somsys._xoptions
. Vid fel returnerasNULL
och ett undantag anges.Tillagd i version 3.2.
-
int PySys_Audit(const char *event, const char *format, ...)¶
- En del av Stabil ABI sedan version 3.13.
Starta en granskningshändelse med alla aktiva hooks. Returnerar noll vid framgång och icke-noll med en undantagsuppsättning vid misslyckande.
Strängargumentet event får inte vara NULL.
Om några hooks har lagts till kommer format och andra argument att användas för att konstruera en tupel att skicka. Förutom
N
finns samma formattecken tillgängliga som används iPy_BuildValue()
. Om det byggda värdet inte är en tupel, kommer det att läggas till i en tupel med ett element.Formatalternativet
N
får inte användas. Det förbrukar en referens, men eftersom det inte finns något sätt att veta om argument till den här funktionen kommer att förbrukas, kan det orsaka referensläckage om det används.Observera att formattecknen
#
alltid skall behandlas somPy_ssize_t
, oavsett omPY_SSIZE_T_CLEAN
definierats.sys.audit()
utför samma funktion från Python-kod.Se även
PySys_AuditTuple()
.Tillagd i version 3.8.
Ändrad i version 3.8.2: Kräver
Py_ssize_t
för#
formattecken. Tidigare gavs en oundviklig deprecation-varning.
-
int PySys_AuditTuple(const char *event, PyObject *args)¶
- En del av Stabil ABI sedan version 3.13.
Liknar
PySys_Audit()
, men skickar argument som ett Python-objekt. args måste vara entuple
. För att inte skicka några argument kan args vara NULL.Tillagd i version 3.13.
-
int PySys_AddAuditHook(Py_AuditHookFunction hook, void *userData)¶
Lägger till den anropsbara hook till listan över aktiva revisionskrokar. Returnerar noll vid framgång och icke-noll vid misslyckande. Om körtiden har initialiserats, ange även ett fel vid misslyckande. Hooks som läggs till via detta API anropas för alla tolkar som skapas av körtiden.
Pekaren userData skickas till hook-funktionen. Eftersom hook-funktioner kan anropas från olika runtimes bör denna pekare inte referera direkt till Python-tillstånd.
Denna funktion är säker att anropa före
Py_Initialize()
. När den anropas efter initialisering under körtid, meddelas befintliga revisionskrokar och kan tyst avbryta operationen genom att skapa ett fel som är underklassat frånException
(andra fel tystas inte).Hook-funktionen anropas alltid med en attached thread state av den Python-tolk som utlöste händelsen.
Se PEP 578 för en detaljerad beskrivning av auditering. Funktioner i runtime och standardbiblioteket som skapar händelser listas i audit events table. Detaljer finns i dokumentationen för varje funktion.
Om tolken initieras, skapar den här funktionen en granskningshändelse
sys.addaudithook
utan argument. Om någon befintlig hook ger upphov till ett undantag som härrör frånException
, kommer den nya hooken inte att läggas till och undantaget rensas. Följaktligen kan anropare inte anta att deras hook har lagts till om de inte kontrollerar alla befintliga hooks.-
typedef int (*Py_AuditHookFunction)(const char *event, PyObject *args, void *userData)¶
Typ av krokfunktion. event är C-strängens händelseargument som skickas till
PySys_Audit()
ellerPySys_AuditTuple()
. args är garanterat ettPyTupleObject
. userData är argumentet som skickas till PySys_AddAuditHook().
Tillagd i version 3.8.
-
typedef int (*Py_AuditHookFunction)(const char *event, PyObject *args, void *userData)¶
Processtyrning¶
-
void Py_FatalError(const char *message)¶
- En del av Stabil ABI.
Skriv ut ett fatalt felmeddelande och avsluta processen. Ingen upprensning utförs. Denna funktion bör endast anropas när ett tillstånd upptäcks som skulle göra det farligt att fortsätta använda Python-tolken, t.ex. när objektadministrationen verkar vara skadad. På Unix anropas standard C-biblioteksfunktionen
abort()
som kommer att försöka producera encore
-fil.Funktionen
Py_FatalError()
ersätts med ett makro som automatiskt loggar namnet på den aktuella funktionen, såvida inte makrotPy_LIMITED_API
är definierat.Ändrad i version 3.9: Loggar funktionsnamnet automatiskt.
-
void Py_Exit(int status)¶
- En del av Stabil ABI.
Avsluta den aktuella processen. Detta anropar
Py_FinalizeEx()
och anropar sedan standard C-biblioteksfunktionenexit(status)
. OmPy_FinalizeEx()
indikerar ett fel, sätts utgångsstatusen till 120.Ändrad i version 3.6: Fel från slutförande ignoreras inte längre.
-
int Py_AtExit(void (*func)())¶
- En del av Stabil ABI.
Registrera en rensningsfunktion som ska anropas av
Py_FinalizeEx()
. Rensningsfunktionen kommer att anropas utan argument och bör inte returnera något värde. Högst 32 rensningsfunktioner kan registreras. När registreringen lyckas returnerarPy_AtExit()
0
; om den misslyckas returnerar den-1
. Den rensningsfunktion som registrerades sist anropas först. Varje rensningsfunktion kommer att anropas högst en gång. Eftersom Pythons interna avslutning kommer att ha slutförts före rensningsfunktionen, bör inga Python API:er anropas av func.Se även
PyUnstable_AtExit()
för att skicka ettvoid *data
-argument.