POSIXErste Schritte mit POSIX


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.