Ricerca…


Versioni

Versione Standard Anno di pubblicazione
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 (alias " Base Specifications, Issue 7 ") 2008-12-01
POSIX.1-2013 IEEE Std 1003.1-2013 2013/04/19
POSIX.1-2016 IEEE Std 1003.1-2016 2016/09/30

Cos'è POSIX?

POSIX è l'acronimo di " Portable Operating System Interface " e definisce una serie di standard per garantire la compatibilità tra diverse piattaforme di elaborazione. La versione attuale dello standard è IEEE 1003.1 2016 e si può accedere dalla specifica POSIX di OpenGroup. Le versioni precedenti includono POSIX 2004 e POSIX 1997 . L'edizione POSIX 2016 è essenzialmente POSIX 2008 più errata (c'era anche una versione POSIX 2013).

POSIX definisce vari strumenti interfacce, comandi e API per sistemi operativi simili a UNIX e altri.

Quanto segue sono considerati nell'ambito della standardizzazione POSIX:

  • Interfaccia di sistema (funzioni, macro e variabili esterne)
  • Interprete dei comandi o Shell (l'utilità sh )
  • Utilità (come più , cat , ls )

Fuori dall'ambito POSIX:

  • Interfacce DBMS
  • Interfacce grafiche
  • Portabilità del codice binario

Ciao mondo

Un semplice programma Hello, World senza controllo degli errori:

#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; 
}

E con il controllo degli errori:

#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; 
}

Compilare e correre

Se il codice mostrato sopra (o la versione) è memorizzato nel file hello.c , allora puoi compilare il codice in un programma hello usando c99 o make . Ad esempio, in modalità strettamente conforme a POSIX, è possibile in teoria compilare ed eseguire il programma utilizzando:

$ make hello
c99 -o hello hello.c
$ ./hello
Hello, World
$

Le implementazioni make più effettive useranno un compilatore C diverso (forse cc , forse gcc , clang , xlc o qualche altro nome), e molti useranno più opzioni per il compilatore. Chiaramente, si può semplicemente digitare il comando che make esegue direttamente sulla riga di comando.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow