POSIX Tutorial
Iniziare con POSIX
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.