Betriebssystem-Dienstprogramme¶
-
PyObject *PyOS_FSPath(PyObject *path)¶
- Rückgabewert: Neue Referenz. Teil der Stable ABI seit Version 3.6.
Gibt die Dateisystemrepräsentation für path zurück. Wenn das Objekt ein
str- oderbytes-Objekt ist, wird eine neue strong reference zurückgegeben. Wenn das Objekt dieos.PathLike-Schnittstelle implementiert, wird__fspath__()zurückgegeben, solange es einstr- oderbytes-Objekt ist. Andernfalls wirdTypeErrorausgelöst undNULLzurückgegeben.Hinzugefügt in Version 3.6.
-
int Py_FdIsInteractive(FILE *fp, const char *filename)¶
Gibt wahr (ungleich Null) zurück, wenn die Standard-I/O-Datei fp mit dem Namen filename als interaktiv angesehen wird. Dies ist der Fall für Dateien, für die
isatty(fileno(fp))wahr ist. WennPyConfig.interactiveungleich Null ist, gibt diese Funktion auch wahr zurück, wenn der filename-ZeigerNULList oder wenn der Name mit einem der Strings'<stdin>'oder'???'übereinstimmt.Diese Funktion darf nicht aufgerufen werden, bevor Python initialisiert wurde.
-
void PyOS_BeforeFork()¶
- Teil der Stable ABI auf Plattformen mit fork() seit Version 3.7.
Funktion zur Vorbereitung interner Zustände vor dem Forken eines Prozesses. Diese sollte vor dem Aufruf von
fork()oder einer ähnlichen Funktion, die den aktuellen Prozess klont, aufgerufen werden. Nur verfügbar auf Systemen, auf denenfork()definiert ist.Warnung
Der C
fork()-Aufruf sollte nur vom „main“-Thread (des „main“-Interpreters) aus erfolgen. Das Gleiche gilt fürPyOS_BeforeFork().Hinzugefügt in Version 3.7.
-
void PyOS_AfterFork_Parent()¶
- Teil der Stable ABI auf Plattformen mit fork() seit Version 3.7.
Funktion zur Aktualisierung interner Zustände nach dem Forken eines Prozesses. Diese sollte im Elternprozess nach dem Aufruf von
fork()oder einer ähnlichen Funktion, die den aktuellen Prozess klont, aufgerufen werden, unabhängig davon, ob das Klonen des Prozesses erfolgreich war. Nur verfügbar auf Systemen, auf denenfork()definiert ist.Warnung
Der C
fork()-Aufruf sollte nur vom „main“-Thread (des „main“-Interpreters) aus erfolgen. Das Gleiche gilt fürPyOS_AfterFork_Parent().Hinzugefügt in Version 3.7.
-
void PyOS_AfterFork_Child()¶
- Teil der Stable ABI auf Plattformen mit fork() seit Version 3.7.
Funktion zur Aktualisierung des internen Interpreterzustands nach dem Forken eines Prozesses. Diese muss im Kindprozess nach dem Aufruf von
fork()oder einer ähnlichen Funktion, die den aktuellen Prozess klont, aufgerufen werden, wenn die Möglichkeit besteht, dass der Prozess zurück in den Python-Interpreter aufruft. Nur verfügbar auf Systemen, auf denenfork()definiert ist.Warnung
Der C
fork()-Aufruf sollte nur vom „main“-Thread (des „main“-Interpreters) aus erfolgen. Das Gleiche gilt fürPyOS_AfterFork_Child().Hinzugefügt in Version 3.7.
Siehe auch
os.register_at_fork()erlaubt die Registrierung benutzerdefinierter Python-Funktionen, die vonPyOS_BeforeFork(),PyOS_AfterFork_Parent()undPyOS_AfterFork_Child()aufgerufen werden.
-
void PyOS_AfterFork()¶
- Teil der Stable ABI auf Plattformen mit fork().
Funktion zur Aktualisierung einiger interner Zustände nach dem Forken eines Prozesses; diese sollte im neuen Prozess aufgerufen werden, wenn der Python-Interpreter weiterhin verwendet werden soll. Wenn eine neue ausführbare Datei in den neuen Prozess geladen wird, muss diese Funktion nicht aufgerufen werden.
Seit Version 3.7 veraltet: Diese Funktion wird durch
PyOS_AfterFork_Child()abgelöst.
-
int PyOS_CheckStack()¶
- Teil der Stable ABI auf Plattformen mit USE_STACKCHECK seit Version 3.7.
Gibt wahr zurück, wenn der Interpreter keinen Stack-Speicher mehr hat. Dies ist eine zuverlässige Prüfung, ist aber nur verfügbar, wenn
USE_STACKCHECKdefiniert ist (derzeit auf bestimmten Versionen von Windows mit dem Microsoft Visual C++ Compiler).USE_STACKCHECKwird automatisch definiert; Sie sollten die Definition niemals in Ihrem eigenen Code ändern.
-
typedef void (*PyOS_sighandler_t)(int)¶
- Teil der Stable ABI.
-
PyOS_sighandler_t PyOS_getsig(int i)¶
- Teil der Stable ABI.
Gibt den aktuellen Signal-Handler für Signal i zurück. Dies ist ein dünner Wrapper um entweder
sigaction()odersignal(). Rufen Sie diese Funktionen nicht direkt auf!
-
PyOS_sighandler_t PyOS_setsig(int i, PyOS_sighandler_t h)¶
- Teil der Stable ABI.
Setzt den Signal-Handler für Signal i auf h; gibt den alten Signal-Handler zurück. Dies ist ein dünner Wrapper um entweder
sigaction()odersignal(). Rufen Sie diese Funktionen nicht direkt auf!
-
wchar_t *Py_DecodeLocale(const char *arg, size_t *size)¶
- Teil der Stable ABI seit Version 3.7.
Warnung
Diese Funktion sollte nicht direkt aufgerufen werden: Verwenden Sie die
PyConfigAPI mit der FunktionPyConfig_SetBytesString(), die sicherstellt, dass Python vorinitialisiert wird.Diese Funktion darf nicht aufgerufen werden, bevor Python vorinitialisiert wurde und die LC_CTYPE-Locale ordnungsgemäß konfiguriert ist: siehe die Funktion
Py_PreInitialize().Dekodiert eine Byte-Zeichenkette aus der Dateisystemkodierung und dem Fehlerbehandlungsmechanismus. Wenn der Fehlerbehandlungsmechanismus der Surrogateescape-Fehlerbehandlungsmechanismus ist, werden nicht dekodierbare Bytes als Zeichen im Bereich U+DC80..U+DCFF dekodiert; und wenn eine Byte-Sequenz als Surrogatzeichen dekodiert werden kann, werden die Bytes stattdessen mit dem Surrogateescape-Fehlerbehandlungsmechanismus maskiert, anstatt sie zu dekodieren.
Gibt einen Zeiger auf eine neu zugeordnete Wide-Zeichenkette zurück, verwenden Sie
PyMem_RawFree(), um den Speicher freizugeben. Wenn size nichtNULList, schreiben Sie die Anzahl der Wide-Zeichen, ausschließlich des Nullzeichens, in*sizeGibt
NULLbei Dekodierungsfehlern oder Speicherzuordnungsfehlern zurück. Wenn size nichtNULList, wird*sizebei Speicherfehlern auf(size_t)-1und bei Dekodierungsfehlern auf(size_t)-2gesetzt.Die Dateisystemkodierung und der Fehlerbehandlungsmechanismus werden durch
PyConfig_Read()ausgewählt: siehe die Mitgliederfilesystem_encodingundfilesystem_errorsvonPyConfig.Dekodierungsfehler sollten niemals auftreten, es sei denn, es liegt ein Fehler in der C-Bibliothek vor.
Verwenden Sie die Funktion
Py_EncodeLocale(), um die Zeichenkette zurück in eine Byte-Zeichenkette zu kodieren.Siehe auch
Die Funktionen
PyUnicode_DecodeFSDefaultAndSize()undPyUnicode_DecodeLocaleAndSize().Hinzugefügt in Version 3.5.
Geändert in Version 3.7: Die Funktion verwendet nun die UTF-8-Kodierung im Python UTF-8-Modus.
Geändert in Version 3.8: Die Funktion verwendet nun unter Windows die UTF-8-Kodierung, wenn
PyPreConfig.legacy_windows_fs_encodingNull ist;
-
char *Py_EncodeLocale(const wchar_t *text, size_t *error_pos)¶
- Teil der Stable ABI seit Version 3.7.
Kodiert eine Wide-Zeichenkette in die Dateisystemkodierung und den Fehlerbehandlungsmechanismus. Wenn der Fehlerbehandlungsmechanismus der Surrogateescape-Fehlerbehandlungsmechanismus ist, werden Surrogatzeichen im Bereich U+DC80..U+DCFF in die Bytes 0x80..0xFF konvertiert.
Gibt einen Zeiger auf eine neu zugeordnete Byte-Zeichenkette zurück, verwenden Sie
PyMem_Free(), um den Speicher freizugeben. GibtNULLbei Kodierungsfehlern oder Speicherzuordnungsfehlern zurück.Wenn error_pos nicht
NULList, wird*error_posbei Erfolg auf(size_t)-1oder bei einem Kodierungsfehler auf den Index des ungültigen Zeichens gesetzt.Die Dateisystemkodierung und der Fehlerbehandlungsmechanismus werden durch
PyConfig_Read()ausgewählt: siehe die Mitgliederfilesystem_encodingundfilesystem_errorsvonPyConfig.Verwenden Sie die Funktion
Py_DecodeLocale(), um die Byte-Zeichenkette zurück in eine Wide-Zeichenkette zu dekodieren.Warnung
Diese Funktion darf nicht aufgerufen werden, bevor Python vorinitialisiert wurde und die LC_CTYPE-Locale ordnungsgemäß konfiguriert ist: siehe die Funktion
Py_PreInitialize().Siehe auch
Die Funktionen
PyUnicode_EncodeFSDefault()undPyUnicode_EncodeLocale().Hinzugefügt in Version 3.5.
Geändert in Version 3.7: Die Funktion verwendet nun die UTF-8-Kodierung im Python UTF-8-Modus.
Geändert in Version 3.8: Die Funktion verwendet nun unter Windows die UTF-8-Kodierung, wenn
PyPreConfig.legacy_windows_fs_encodingNull ist.
-
FILE *Py_fopen(PyObject *path, const char *mode)¶
Ähnlich wie
fopen(), aber path ist ein Python-Objekt und bei einem Fehler wird eine Ausnahme gesetzt.path muss ein
str-Objekt, einbytes-Objekt oder ein Pfad-ähnliches Objekt sein.Bei Erfolg wird der neue Dateizeiger zurückgegeben. Bei einem Fehler wird eine Ausnahme gesetzt und
NULLzurückgegeben.Die Datei muss mit
Py_fclose()geschlossen werden, anstatt direktfclose()aufzurufen.Der Dateideskriptor wird als nicht erblich erstellt (PEP 446).
Der Aufrufer muss einen Thread-Status angehängt haben.
Hinzugefügt in Version 3.14.
-
int Py_fclose(FILE *file)¶
Schließt eine Datei, die mit
Py_fopen()geöffnet wurde.Bei Erfolg wird
0zurückgegeben. Bei einem Fehler wirdEOFzurückgegeben und errno gesetzt, um den Fehler anzuzeigen. In beiden Fällen führt jeder weitere Zugriff (einschließlich eines weiteren Aufrufs vonPy_fclose()) auf den Stream zu undefiniertem Verhalten.Hinzugefügt in Version 3.14.
Systemfunktionen¶
Dies sind Hilfsfunktionen, die Funktionalität aus dem Modul sys für C-Code zugänglich machen. Sie alle arbeiten mit dem aktuellen Interpreter-Thread-eigenen sys-Modul-Dictionary, das sich im internen Thread-Zustandsstruktur befindet.
-
PyObject *PySys_GetObject(const char *name)¶
- Rückgabewert: Ausgeliehene Referenz. Teil der Stable ABI.
Gibt das Objekt name aus dem Modul
syszurück oderNULL, wenn es nicht existiert, ohne eine Ausnahme zu setzen.
-
int PySys_SetObject(const char *name, PyObject *v)¶
- Teil der Stable ABI.
Setzt name im Modul
sysauf v, es sei denn, v istNULL, in diesem Fall wird name aus dem sys-Modul gelöscht. Gibt0bei Erfolg und-1bei einem Fehler zurück.
-
void PySys_ResetWarnOptions()¶
- Teil der Stable ABI.
Setzt
sys.warnoptionsauf eine leere Liste zurück. Diese Funktion kann vorPy_Initialize()aufgerufen werden.Seit Version 3.13 veraltet, wird in Version 3.15 entfernt: Löschen Sie stattdessen
sys.warnoptionsundwarnings.filters.
-
void PySys_WriteStdout(const char *format, ...)¶
- Teil der Stable ABI.
Schreibt die durch format beschriebene Ausgabesequenz nach
sys.stdout. Es werden keine Ausnahmen ausgelöst, auch wenn eine Kürzung erfolgt (siehe unten).format sollte die Gesamtgröße der formatierten Ausgabesequenz auf 1000 Bytes oder weniger begrenzen – nach 1000 Bytes wird die Ausgabesequenz abgeschnitten. Insbesondere bedeutet dies, dass keine uneingeschränkten "%s"-Formate auftreten sollten; diese sollten mit „%.<N>s“ begrenzt werden, wobei <N> eine Dezimalzahl ist, die so berechnet wird, dass <N> zuzüglich der maximalen Größe anderer formatierter Texte 1000 Bytes nicht überschreitet. Achten Sie auch auf "%f", das Hunderte von Ziffern für sehr große Zahlen ausgeben kann.
Wenn ein Problem auftritt oder
sys.stdoutnicht gesetzt ist, wird die formatierte Nachricht in die tatsächliche (C-Ebene) stdout geschrieben.
-
void PySys_WriteStderr(const char *format, ...)¶
- Teil der Stable ABI.
Wie
PySys_WriteStdout(), aber schreibt nachsys.stderroder stderr.
-
void PySys_FormatStdout(const char *format, ...)¶
- Teil der Stable ABI.
Funktion ähnlich wie PySys_WriteStdout(), formatiert die Nachricht jedoch mit
PyUnicode_FromFormatV()und kürzt die Nachricht nicht auf eine willkürliche Länge.Hinzugefügt in Version 3.2.
-
void PySys_FormatStderr(const char *format, ...)¶
- Teil der Stable ABI.
Wie
PySys_FormatStdout(), schreibt aber nachsys.stderroder stderr.Hinzugefügt in Version 3.2.
-
PyObject *PySys_GetXOptions()¶
- Rückgabewert: Geborgte Referenz. Teil der Stable ABI seit Version 3.7.
Gibt das aktuelle Wörterbuch der
-X-Optionen zurück, ähnlich wiesys._xoptions. Bei einem Fehler wirdNULLzurückgegeben und eine Ausnahme gesetzt.Hinzugefügt in Version 3.2.
-
int PySys_Audit(const char *event, const char *format, ...)¶
- Teil des Stable ABI seit Version 3.13.
Löst ein Audit-Ereignis mit allen aktiven Hooks aus. Gibt Null für Erfolg und ungleich Null mit einer gesetzten Ausnahme im Fehlerfall zurück.
Das Argument event als Zeichenkette darf nicht NULL sein.
Wenn Hooks hinzugefügt wurden, werden format und andere Argumente verwendet, um ein Tupel zu erstellen, das übergeben wird. Abgesehen von
Nsind die gleichen Formatzeichen wie beiPy_BuildValue()verfügbar. Wenn der erstellte Wert kein Tupel ist, wird er in ein Tupel mit einem Element eingefügt.Die Formatierungsoption
Ndarf nicht verwendet werden. Sie verbraucht eine Referenz, aber da es keine Möglichkeit gibt zu wissen, ob Argumente an diese Funktion verbraucht werden, kann ihre Verwendung zu Referenzlecks führen.Beachten Sie, dass Formatierungszeichen wie
#immer alsPy_ssize_tbehandelt werden sollten, unabhängig davon, obPY_SSIZE_T_CLEANdefiniert war.sys.audit()führt die gleiche Funktion vom Python-Code aus.Siehe auch
PySys_AuditTuple().Hinzugefügt in Version 3.8.
Geändert in Version 3.8.2: Fordert
Py_ssize_tfür Formatzeichen#. Zuvor wurde eine unvermeidbare Deprecation-Warnung ausgegeben.
-
int PySys_AuditTuple(const char *event, PyObject *args)¶
- Teil des Stable ABI seit Version 3.13.
Ähnlich wie
PySys_Audit(), aber übergibt Argumente als Python-Objekt. args muss eintuplesein. Um keine Argumente zu übergeben, kann argsNULLsein.Hinzugefügt in Version 3.13.
-
int PySys_AddAuditHook(Py_AuditHookFunction hook, void *userData)¶
Hängt die aufrufbare hook an die Liste der aktiven Audit-Hooks an. Gibt Null bei Erfolg und ungleich Null bei einem Fehler zurück. Wenn die Laufzeitumgebung initialisiert wurde, wird im Fehlerfall auch eine Ausnahme gesetzt. Hooks, die über diese API hinzugefügt wurden, werden für alle von der Laufzeitumgebung erstellten Interpreter aufgerufen.
Der Zeiger userData wird an die Hook-Funktion übergeben. Da Hook-Funktionen von verschiedenen Laufzeitumgebungen aufgerufen werden können, sollte dieser Zeiger nicht direkt auf den Python-Zustand verweisen.
Diese Funktion kann sicher vor
Py_Initialize()aufgerufen werden. Wenn sie nach der Laufzeitinitialisierung aufgerufen wird, werden bestehende Audit-Hooks benachrichtigt und können die Operation stillschweigend abbrechen, indem sie eine Unterklasse vonExceptionauslösen (andere Fehler werden nicht unterdrückt).Die Hook-Funktion wird vom Python-Interpreter, der das Ereignis ausgelöst hat, immer mit einem angehängten Thread-Zustand aufgerufen.
Siehe PEP 578 für eine detaillierte Beschreibung der Audits. Funktionen in der Laufzeit und der Standardbibliothek, die Ereignisse auslösen, sind in der Tabelle der Audit-Ereignisse aufgeführt. Details finden Sie in der Dokumentation jeder Funktion.
Wenn der Interpreter initialisiert ist, löst diese Funktion ein Audit-Ereignis
sys.addaudithookohne Argumente aus. Wenn ein bestehender Hook eine Ausnahme auslöst, die vonExceptionabgeleitet ist, wird der neue Hook nicht hinzugefügt und die Ausnahme wird gelöscht. Infolgedessen können Aufrufer nicht davon ausgehen, dass ihr Hook hinzugefügt wurde, es sei denn, sie kontrollieren alle bestehenden Hooks.-
typedef int (*Py_AuditHookFunction)(const char *event, PyObject *args, void *userData)¶
Der Typ der Hook-Funktion. event ist das C-String-Ereignisargument, das an
PySys_Audit()oderPySys_AuditTuple()übergeben wird. args ist garantiert einPyTupleObject. userData ist das an PySys_AddAuditHook() übergebene Argument.
Hinzugefügt in Version 3.8.
-
typedef int (*Py_AuditHookFunction)(const char *event, PyObject *args, void *userData)¶
Prozesssteuerung¶
-
void Py_FatalError(const char *message)¶
- Teil der Stable ABI.
Gibt eine schwerwiegende Fehlermeldung aus und beendet den Prozess. Es wird keine Bereinigung durchgeführt. Diese Funktion sollte nur aufgerufen werden, wenn eine Bedingung erkannt wird, die es gefährlich machen würde, den Python-Interpreter weiter zu verwenden; z.B. wenn die Objektverwaltung beschädigt zu sein scheint. Unter Unix wird die Standard-C-Bibliotheksfunktion
abort()aufgerufen, die versucht, einecore-Datei zu erzeugen.Die Funktion
Py_FatalError()wird durch ein Makro ersetzt, das automatisch den Namen der aktuellen Funktion protokolliert, es sei denn, das MakroPy_LIMITED_APIist definiert.Geändert in Version 3.9: Der Funktionsname wird automatisch protokolliert.
-
void Py_Exit(int status)¶
- Teil der Stable ABI.
Beendet den aktuellen Prozess. Dies ruft
Py_FinalizeEx()auf und ruft dann die Standard-C-Bibliotheksfunktionexit(status)auf. WennPy_FinalizeEx()einen Fehler anzeigt, wird der Exit-Status auf 120 gesetzt.Geändert in Version 3.6: Fehler bei der Finalisierung werden nicht mehr ignoriert.
-
int Py_AtExit(void (*func)())¶
- Teil der Stable ABI.
Registriert eine Bereinigungsfunktion, die von
Py_FinalizeEx()aufgerufen wird. Die Bereinigungsfunktion wird ohne Argumente aufgerufen und sollte keinen Wert zurückgeben. Es können höchstens 32 Bereinigungsfunktionen registriert werden. Wenn die Registrierung erfolgreich ist, gibtPy_AtExit()0zurück; bei einem Fehler gibt sie-1zurück. Die zuletzt registrierte Bereinigungsfunktion wird zuerst aufgerufen. Jede Bereinigungsfunktion wird höchstens einmal aufgerufen. Da die interne Finalisierung von Python abgeschlossen ist, bevor die Bereinigungsfunktion aufgerufen wird, sollten keine Python-APIs von func aufgerufen werden.Siehe auch
PyUnstable_AtExit()zum Übergeben einesvoid *data-Arguments.