POSIXDémarrer avec POSIX


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