POSIX Tutoriel
Démarrer avec POSIX
Recherche…
Versions
Version | la norme | Année de sortie |
---|---|---|
POSIX.1 | Norme IEEE 1003.1-1988 | 1988-01-01 |
POSIX.1b | Norme IEEE 1003.1b-1993 | 1993-01-01 |
POSIX.1c | Norme IEEE 1003.1c-1995 | 1995-01-01 |
POSIX.2 | Norme IEEE 1003.2-1992 | 1992-01-01 |
POSIX.1-2001 | Norme IEEE 1003.1-2001 | 2001-12-06 |
POSIX.1-2004 | Norme IEEE 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 | Norme IEEE 1003.1-2013 | 2013-04-19 |
POSIX.1-2016 | Norme IEEE 1003.1-2016 | 2016-09-30 |
Qu'est ce que POSIX?
POSIX signifie " Portable Operating System Interface " et définit un ensemble de normes pour assurer la compatibilité entre les différentes plates-formes informatiques. La version actuelle de la norme est IEEE 1003.1 2016 et est accessible à partir de la spécification OpenGroup POSIX . Les versions précédentes incluent POSIX 2004 et POSIX 1997 . L'édition POSIX 2016 est essentiellement POSIX 2008 plus des errata (il y a eu une version POSIX 2013 également).
POSIX définit diverses interfaces d'outils, commandes et API pour les systèmes d'exploitation de type UNIX et autres.
Les éléments suivants sont considérés comme relevant de la normalisation POSIX:
- Interface système (fonctions, macros et variables externes)
- Interpréteur de commandes, ou Shell (l'utilitaire sh )
- Utilitaires (comme plus , chat , ls )
En dehors de la portée POSIX:
- Interfaces SGBD
- Interfaces Graphiques
- Portabilité du code binaire
Bonjour le monde
Un simple programme Hello, World
sans vérification d'erreur:
#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;
}
Et avec la vérification d'erreur:
#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;
}
Compiler et courir
Si le code ci-dessus (l'une ou l'autre version) est stocké dans le fichier hello.c
, vous pouvez compiler le code dans un programme hello
utilisant c99
ou make
. Par exemple, dans un mode strictement conforme à POSIX, vous pourriez en théorie compiler et exécuter le programme en utilisant:
$ make hello
c99 -o hello hello.c
$ ./hello
Hello, World
$
La plupart des implémentations de make
utilisent un compilateur C différent (peut-être cc
, peut-être gcc
, clang
, xlc
ou un autre nom), et beaucoup utiliseront plus d'options pour le compilateur. De toute évidence, vous pouvez simplement taper la commande qui s'exécute directement sur la ligne de commande. make