# POSIX

Das Portable Operating System Interface (POSIX [ˈpɒzɪks]) ist eine gemeinsam vom IEEE und der Open Group für Unix entwickelte standardisierte Programmierschnittstelle, welche die Schnittstelle zwischen Anwendungssoftware und Betriebssystem darstellt. Die internationale Norm trägt die Bezeichnung ISO/IEC/IEEE 9945.
Eine alternative Bezeichnung lautet (The Open Group Technical Standard) Base Specifications. POSIX bildet die Grundlage der Single UNIX Specification.

## Entwicklung

Der heutige Standard ist eine Weiterentwicklung aus einem Projekt von 1985. Der Begriff POSIX wurde von Richard Stallman vorgeschlagen und kommt der Bitte des IEEE nach einem einprägsamen Namen nach; er löste die Bezeichnung IEEE-IX ab. Die meisten Unix-Derivate halten sich weitgehend an die in IEEE1003.1 (1990) und IEEE1003.2 (1992) festgelegten Standards. Diese älteren Versionen wurden 2001 durch die überarbeitete Version IEEE Std 1003.1-2001 des IEEE und Open Group abgelöst. 2004 wurde eine leicht korrigierte Version IEEE Std 1003.1, 2004 Edition veröffentlicht. Eine Revision erfolgte 2008, diese erhielt 2013, 2016 und 2017 weitere Revisionen. Im Jahr 2024 erfolgte eine neue Ausgabe des Standards.

## Spezifikation

Die Spezifikation der Benutzer- und Software-Schnittstelle des Betriebssystems ist in vier Teile gegliedert, die zusammen den Standard IEEE Std 1003.1-2024 bilden:

### Basis-Definitionen

    Eine Liste der im Standard benutzten Konventionen, Definitionen und Konzepte.

### System-Schnittstelle

    Die C-Systemaufrufe und dazugehörige Header-Dateien.

### Kommandozeileninterpreter und Hilfsprogramme

    Eine Liste der Hilfsprogramme und der Kommandozeileninterpreter.

### Erklärungen

    Erläuterungen über den Standard.
Weitere Hilfsprogramme wie awk, vi oder echo sind ebenfalls Teil des POSIX-Standards. Die C-Funktionen stellen unter anderem Ein- bzw. Ausgabe (für Dateien, Terminals und Netzwerkdienste) zur Verfügung und stellen Kontrolle über Prozesse sowie die Benutzer- und Gruppenverwaltung her.

## POSIX-kompatible Betriebssysteme

Betriebssysteme können vollständig oder teilweise POSIX-kompatibel sein – dies hängt davon ab, ob sie die POSIX-Standards gänzlich oder nur teilweise umsetzen. Die (meist minimalen) Abweichungen vom Standard sind heutzutage primär eine bewusste Entscheidung zugunsten anderer Kompatibilität und weniger ein Mangel an Umsetzbarkeit. POSIX-konforme Betriebssysteme werden von der Open-Group mit dem Unix-Zeichen versehen.

### Vollständig POSIX-konform

Folgende Betriebssysteme sind zum gesamten Standard vollständig kompatibel und somit POSIX-konform:
* A/UX
* AIX
* BSD/OS
* HP-UX
* INTEGRITY
* IRIX
* LynxOS
* macOS inkl. Darwin
* MINIX
* OpenVMS
* penOS
* QNX
* RTEMS (POSIX 1003.1-2003 Profile 52)
* Solaris, OpenSolaris sowie illumos und darauf aufbauende Systeme
* UnixWare
* velOSity
* VxWorks

### Weitgehend POSIX-kompatibel

Diese Betriebssysteme sind größtenteils kompatibel, aber nicht gänzlich konform zu den Standards:
* BeOS und dessen Open-Source-Nachfolger Haiku
* DragonFly BSD
* FreeBSD
* GNU
* KasperskyOS
* Linux, siehe auch Linux Standard Base (LSB)
* NetBSD
* Nucleus RTOS
* OpenBSD
* PikeOS (Echtzeitbetriebssystem für eingebettete Systeme mit optionalen PSE51- und PSE52-Partitionen)
* SerenityOS
* SkyOS
* Stratus VOS
* SuperUX
* Syllable
* VSTa

### POSIX-Kompatibilitätserweiterungen

Diese Betriebssysteme sind gewöhnlich nicht POSIX-kompatibel, es können aber Kompatibilitätserweiterungen eingesetzt werden. POSIX-Unterstützung wird in der Regel mittels Übersetzungs­bibliotheken oder einer Zwischenschicht „über“ dem Kernel umgesetzt. Volle POSIX-Konformität ist meist nicht gegeben.
* Die NT-Kernel von Windows bei Nutzung der Microsoft Windows Services for UNIX. Unterstützung von Untermengen wie die Posix Threads wird z. B. durch „Pthreads-w32“ ermöglicht.
* eCos – POSIX ist Teil der Standard-Distribution und wird von vielen Anwendungen verwendet.
* Plan 9: APE – ANSI/POSIX Environment
* Symbian OS mit PIPS (PIPS Is POSIX on Symbian)
* AmigaOS/MorphOS mit der ixemul.library