POSIX Tutorial
Erste Schritte mit POSIX
Suche…
Versionen
Ausführung | Standard | Erscheinungsjahr |
---|---|---|
POSIX.1 | IEEE Std 1003.1-1988 | 1988-01-01 |
POSIX.1b | IEEE Std 1003.1b-1993 | 1993-01-01 |
POSIX.1c | IEEE Std 1003.1c-1995 | 1995-01-01 |
POSIX.2 | IEEE Std 1003.2-1992 | 1992-01-01 |
POSIX.1-2001 | IEEE Std 1003.1-2001 | 2001-12-06 |
POSIX.1-2004 | IEEE Std 1003.1-2004 | 2004-01-01 |
POSIX.1-2008 | IEEE Std 1003.1-2008 (auch bekannt als " Basisspezifikationen, Ausgabe 7 ") | 2008-12-01 |
POSIX.1-2013 | IEEE-Standard 1003.1-2013 | 2013-04-19 |
POSIX.1-2016 | IEEE Std 1003.1-2016 | 2016-09-30 |
Was ist POSIX?
POSIX steht für " Portable Operating System Interface " und definiert eine Reihe von Standards, um die Kompatibilität zwischen verschiedenen Computerplattformen zu gewährleisten. Die aktuelle Version des Standards ist IEEE 1003.1 2016 und kann von der OpenGroup POSIX-Spezifikation aus aufgerufen werden. Frühere Versionen enthalten POSIX 2004 und POSIX 1997 . Die Ausgabe von POSIX 2016 umfasst im Wesentlichen POSIX 2008 plus errata (es gab auch eine Veröffentlichung von POSIX 2013).
POSIX definiert verschiedene Werkzeugschnittstellen, Befehle und APIs für UNIX-ähnliche Betriebssysteme und andere.
Folgendes wird als im Rahmen der POSIX-Standardisierung betrachtet:
- Systemschnittstelle (Funktionen, Makros und externe Variablen)
- Befehlsinterpreter oder Shell (das Dienstprogramm sh )
- Dienstprogramme (wie more , cat , ls )
Außerhalb des POSIX-Bereichs:
- DBMS-Schnittstellen
- Grafische Schnittstellen
- Binärcode-Portabilität
Hallo Welt
Ein einfaches Hello, World
Programm ohne Fehlerprüfung:
#include <unistd.h> /* For write() and STDOUT_FILENO */
#include <stdlib.h> /* For EXIT_SUCCESS and EXIT_FAILURE */
int main(void) {
char hello[] = "Hello, World\n";
/* Attempt to write `hello` to standard output file */
write(STDOUT_FILENO, hello, sizeof(hello) - 1);
return EXIT_SUCCESS;
}
Und mit Fehlerprüfung:
#include <unistd.h> /* For write() and STDOUT_FILENO */
#include <stdlib.h> /* For EXIT_SUCCESS and EXIT_FAILURE */
int main(void) {
char hello[] = "Hello, World\n";
ssize_t ret = 0;
/* Attempt to write `hello` to standard output file */
ret = write(STDOUT_FILENO, hello, sizeof(hello) - 1);
if (ret == -1) {
/* write() failed. */
return EXIT_FAILURE;
} else if (ret != sizeof(hello) - 1) {
/* Not all bytes of `hello` were written. */
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
Kompilieren und Laufen
Wenn der Code oben (entweder Version) gezeigt wird in der Datei gespeichert hello.c
, dann können Sie den Code in ein Programm kompilieren hello
entweder mit c99
oder make
. In einem streng POSIX-kompatiblen Modus können Sie das Programm theoretisch wie folgt kompilieren und ausführen:
$ make hello
c99 -o hello hello.c
$ ./hello
Hello, World
$
Die meisten tatsächlichen make
Implementierungen verwenden einen anderen C-Compiler (vielleicht cc
, vielleicht gcc
, clang
, xlc
oder einen anderen Namen), und viele verwenden mehr Optionen für den Compiler. Natürlich können Sie einfach den Befehl eingeben, der von make
direkt in der Befehlszeile ausgeführt wird.