posix — Die häufigsten POSIX-Systemaufrufe


Dieses Modul gibt Zugriff auf Funktionalität des Betriebssystems, die vom C-Standard und vom POSIX-Standard festgeschrieben ist (eine dünn verkleidete Unix-Schnittstelle).

Importiere dieses Modul nicht unmittelbar. Importiere stattdessen das Modul os, das eine portable Fassung dieser Schnittstelle bietet. Unter Unix bietet das Modul os eine Obermenge der Schnittstelle von posix. Auf Betriebssystemen, die nicht Unix sind, ist das Modul posix nicht verfügbar, über die Schnittstelle von os ist aber immer eine Teilmenge verfügbar. Sobald os importiert ist, kostet es keine Geschwindigkeit, es anstelle von posix zu verwenden. Darüber hinaus bietet os zusätzliche Funktionalität, etwa den automatischen Aufruf von putenv(), wenn ein Eintrag in os.environ geändert wird.

Fehler werden als Ausnahmen gemeldet. Bei Typfehlern werden die üblichen Ausnahmen ausgelöst, Fehler, die die Systemaufrufe melden, lösen OSError aus.

Unterstützung großer Dateien

Mehrere Betriebssysteme (darunter AIX und Solaris) unterstützen Dateien, die größer als 2 GiB sind, aus einem C-Programmiermodell heraus, in dem int und long 32-Bit-Werte sind. Üblicherweise wird das erreicht, indem die betreffenden Größen- und Versatztypen als 64-Bit-Werte festgelegt werden. Solche Dateien werden manchmal große Dateien genannt.

Die Unterstützung großer Dateien ist in Python eingeschaltet, wenn die Größe eines off_t größer ist als die eines long und das long long mindestens so groß ist wie ein off_t. Möglicherweise musst du Python mit bestimmten Compiler-Schaltern konfigurieren und kompilieren, um diesen Modus einzuschalten. Mit Solaris 2.6 und 2.7 zum Beispiel brauchst du etwas wie:

CFLAGS="`getconf LFS_CFLAGS`" OPT="-g -O2 $CFLAGS" \
        ./configure

Auf Linux-Systemen, die große Dateien beherrschen, könnte das funktionieren:

CFLAGS='-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64' OPT="-g -O2 $CFLAGS" \
        ./configure

Erwähnenswerter Inhalt des Moduls

Neben vielen Funktionen, die in der Dokumentation des Moduls os beschrieben sind, legt posix das folgende Datenelement fest:

posix.environ

Ein Dictionary, das die Zeichenketten-Umgebung zum Startzeitpunkt des Interpreters darstellt. Schlüssel und Werte sind unter Unix bytes und unter Windows str. environ[b'HOME'] (unter Windows environ['HOME']) ist zum Beispiel der Pfadname deines Persönlichen Ordners, entsprechend getenv("HOME") in C.

Dieses Dictionary zu ändern, wirkt sich nicht auf die Zeichenketten-Umgebung aus, die execv(), popen() oder system() weitergeben. Musst du die Umgebung ändern, übergib environ an execve() oder ergänze die Befehlszeichenkette für system() oder popen() um Variablenzuweisungen und export-Anweisungen.

Geändert in Version 3.2: Unter Unix sind Schlüssel und Werte bytes.

Bemerkung

Das Modul os bietet eine andere Umsetzung von environ, die die Umgebung beim Ändern mitführt. Beachte außerdem, dass dieses Dictionary veraltet, sobald os.environ aktualisiert wird. Es wird empfohlen, die Fassung aus dem Modul os zu verwenden statt unmittelbar auf das Modul posix zuzugreifen.