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- eller bytes-objekt returneras en ny strong reference. Om objektet implementerar gränssnittet os.PathLike, returneras __fspath__() så länge det är ett str eller bytes objekt. Annars genereras TypeError och NULL 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. Om PyConfig.interactive är icke-noll, returnerar denna funktion också true om pekaren filnamn är NULL 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är fork() är definierad.

Varning

C fork()-anropet bör endast göras från ”main”-tråden (av ”main”-tolken). Detsamma gäller för PyOS_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är fork() är definierad.

Varning

C fork()-anropet bör endast göras från ”main”-tråden (av ”main”-tolken). Detsamma gäller för PyOS_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är fork() är definierad.

Varning

C fork()-anropet bör endast göras från ”main”-tråden (av ”main”-tolken). Detsamma gäller för PyOS_AfterFork_Child().

Tillagd i version 3.7.

Se även

os.register_at_fork() tillåter registrering av anpassade Python-funktioner som ska anropas av PyOS_BeforeFork(), PyOS_AfterFork_Parent() och PyOS_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() eller signal(). 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() eller signal(). 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 med PyConfig_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 är NULL, skriv antalet breda tecken exklusive nulltecknet till *size

Returnerar NULL vid avkodningsfel eller minnesallokeringsfel. Om size inte är NULL, 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(): se filesystem_encoding och filesystem_errors-medlemmar av PyConfig.

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.

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. Returnerar NULL 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(): se filesystem_encoding och filesystem_errors-medlemmar av PyConfig.

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.

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, ett bytes-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 anropa fclose().

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 returneras EOF och errno sätts för att indikera felet. I båda fallen resulterar all ytterligare åtkomst (inklusive ett annat anrop till Py_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 eller NULL 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 är NULL, i vilket fall namn tas bort från sys-modulen. Returnerar 0 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öre Py_Initialize().

Deprecated since version 3.13, will be removed in version 3.15: Rensa sys.warnoptions och warnings.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 till sys.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 till sys.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 som sys._xoptions. Vid fel returneras NULL 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 i Py_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 som Py_ssize_t, oavsett om PY_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 en tuple. 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ån Exception (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ån Exception, 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() eller PySys_AuditTuple(). args är garanterat ett PyTupleObject. userData är argumentet som skickas till PySys_AddAuditHook().

Tillagd i version 3.8.

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 en core-fil.

Funktionen Py_FatalError() ersätts med ett makro som automatiskt loggar namnet på den aktuella funktionen, såvida inte makrot Py_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-biblioteksfunktionen exit(status). Om Py_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 returnerar Py_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 ett void *data-argument.