POSIX (zkratka pro Portable Operating System Interface, přičemž „X“ bylo přidáno pro „unixový nádech“) definuje rozhraní mezi aplikací a operačním systémem. Pokud je systém „POSIX-compliant“, znamená to, že program napsaný podle těchto pravidel se zkompiluje a spustí na jakémkoli jiném systému splňujícím tento standard.
V 80. letech existovalo mnoho verzí Unixu (System V, BSD, AIX atd.), které se od sebe mírně lišily. Vývojáři museli pro každou platformu kód upravovat, což bylo nákladné.
Standard pokrývá širokou škálu oblastí, které považujeme za samozřejmé, ale dříve byly nejednotné:
Definuje, jak program žádá jádro o služby. Například:
open(), read(), write(), close() pro práci se soubory.fork() a exec() pro vytváření a spouštění nových procesů.
Určuje standardní chování příkazového řádku (Bash, Sh) a základních nástrojů jako ls, grep, awk nebo sed. To zaručuje, že skripty napsané na jednom systému poběží i na druhém.
Standard POSIX Threads (Pthreads) definuje API pro vícevláknové programování. Umožňuje programům v C++ nebo C využívat více jader CPU jednotným způsobem.
Definuje syntaxi pro vyhledávání textu (Basic a Extended Regular Expressions), kterou používá většina unixových nástrojů.
Díky POSIXu může vývojář použít například Clang k sestavení webového serveru na macOS a následně tentýž kód (bez změn v systémových voláních) nasadit na Linuxový server v cloudu.
| Oblast | Výhoda POSIXu |
|---|---|
| Souborový systém | Cesta se vždy odděluje lomítkem (/). |
| Chybové stavy | Standardní chybové kódy jako EACCES (přístup odepřen). |
| Signály | Standardizované signály jako SIGKILL nebo SIGTERM. |
—
Zajímavost: Ačkoliv se Windows snaží od POSIXu distancovat, jeho síťový stack a některé vnitřní mechanismy historicky vycházely z BSD kódu, aby bylo snazší portovat síťové aplikace.