POSIX Zelfstudie
Aan de slag met POSIX
Zoeken…
versies
Versie | Standaard | Jaar van uitgave |
---|---|---|
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 (ook bekend als " Basisspecificaties, uitgave 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 |
Wat is POSIX?
POSIX staat voor " Portable Operating System Interface " en definieert een reeks normen voor compatibiliteit tussen verschillende computerplatforms. De huidige versie van de standaard is IEEE 1003.1 2016 en is toegankelijk via de POSIX-specificatie van OpenGroup. Eerdere versies omvatten POSIX 2004 en POSIX 1997 . De POSIX 2016-editie is in wezen POSIX 2008 plus errata (er was ook een POSIX 2013-release).
POSIX definieert verschillende gereedschapsinterfaces, opdrachten en API's voor UNIX-achtige besturingssystemen en andere.
Het volgende wordt geacht binnen het bereik van POSIX-standaardisatie te vallen:
- Systeeminterface (functies, macro's en externe variabelen)
- Command interpreter of Shell (het hulpprogramma sh )
- Hulpprogramma's (zoals meer , cat , ls )
Buiten het bereik van POSIX:
- DBMS-interfaces
- Grafische interfaces
- Binaire codeportabiliteit
Hallo Wereld
Een eenvoudig Hello, World
programma zonder foutcontrole:
#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;
}
En met foutcontrole:
#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;
}
Compileren en uitvoeren
Als de hierboven getoonde code (beide versies) is opgeslagen in het bestand hello.c
, dan kunt u de code compileren in een programma hello
met behulp van c99
of make
. In een strikt POSIX-compatibele modus kunt u het programma in theorie bijvoorbeeld compileren en uitvoeren met:
$ make hello
c99 -o hello hello.c
$ ./hello
Hello, World
$
De meeste werkelijke make
-implementaties zal een andere C-compiler (misschien gebruiken cc
, misschien gcc
, clang
, xlc
of een andere naam), en velen zullen meer opties gebruiken om de compiler. Het is duidelijk, kan je typt de opdracht die make
uitvoert rechtstreeks op de opdrachtregel.