Section courante

A propos

Section administrative du site

Les premiers pas

Le langage C occupe une place centrale dans l'univers Unix, car il a été conçu en même temps que ce système d'exploitation dans les années 1970 par Dennis Ritchie au sein des laboratoires Bell. Grâce à sa portabilité et à sa puissance, C est devenu le langage privilégié pour le développement des applications système, des utilitaires et même du noyau d'Unix lui-même. Aujourd'hui, apprendre à programmer en C sous Unix permet de comprendre en profondeur le fonctionnement du système, notamment la gestion des fichiers, des processus et de la mémoire.

L'une des premières étapes pour coder en C sur Unix consiste à utiliser un éditeur de texte comme vi pour écrire un programme source, puis à le compiler avec CC. Par exemple, un programme simple affichant "Bonjour le monde!" peut être écrit dans un fichier hello.c, puis compilé avec la commande cc hello.c -o hello. L'exécution se fait ensuite avec ./hello, illustrant ainsi la simplicité du modèle de développement sous Unix. Cette approche met en avant les principes fondamentaux du système, comme la manipulation des fichiers et des processus via des appels système standards.

En exploitant les bibliothèques standards d'Unix, comme <unistd.h> pour les appels système ou <sys/types.h> pour les types spécifiques, un programmeur peut interagir directement avec le système d'exploitation. De plus, Unix favorise une philosophie modulaire où chaque programme fait une tâche bien définie et peut être combiné avec d'autres via les pipes et redirections de l'interpréteur de commande. Programmer en C pour Unix permet ainsi de mieux maîtriser l'environnement Unix et d'optimiser des applications en exploitant les API systèmes de bas niveau.

POSIX

Le POSIX.1-2017 est une norme définie par IEEE 1003.1-2017, également connue sous le nom de «The Open Group Base Specifications Issue 7, 2018 Edition». Elle fait partie des spécifications POSIX (Portable Operating System Interface for Unix), définissant une interface standardisée pour les systèmes d'exploitation de type Unix.

Étendue

POSIX.1-2017 définit une interface et un environnement de système d'exploitation standard, incluant un interpréteur de commandes (ou «shell») et des utilitaires communs pour la portabilité des applications au niveau du code source. Il est destiné aux développeurs d'applications et aux implémenteurs de systèmes.

POSIX.1-2017 comprend quatre composantes principaux (chacun dans un volume associé) :

Les domaines suivants ne relèvent pas du champ d'application de POSIX.1-2017 :

POSIX.1-2017 décrit les caractéristiques et fonctionnalités externes importantes pour les développeurs d'applications, plutôt que les techniques de construction internes employées pour les obtenir. Une attention particulière est portée aux fonctions et fonctionnalités nécessaires à une grande variété d'applications commerciales.

Les fonctionnalités fournies dans POSIX.1-2017 sont tirées des documents de base suivants :

L'accent a été mis sur la normalisation des pratiques existantes pour les utilisateurs existants, les modifications et ajouts se limitant à la correction des lacunes dans les domaines suivants :

Conformité

Les exigences de conformité à la norme POSIX.1-2017 sont définies dans la page Conformité.

Références normatives

Les normes suivantes contiennent des dispositions qui, par référence à POSIX.1-2017, constituent des dispositions de POSIX.1-2017. Au moment de la publication, les éditions indiquées étaient en vigueur. Toutes les normes sont susceptibles d'être révisées, et les parties aux accords basés sur POSIX.1-2017 sont encouragées à étudier la possibilité d'appliquer les éditions les plus récentes des normes listées ci-dessous. Les membres de l'IEC et de l'ISO tiennent à jour les registres des Normes internationales en vigueur.

Norme Description
ANS X3.9-1978 (Réaffirmé en 1989) Norme nationale américaine pour les systèmes d'information : norme X3.9-1978, langage de programmation FORTRAN.1
ISO/IEC 646:1991 ISO/CEI 646:1991, Traitement de l'information - Ensemble de caractères codés ISO à 7 bits pour l'échange d'informations.2
ISO 4217:2001 ISO 4217:2001, Codes pour la représentation des monnaies et des fonds.
ISO 8601:2004 ISO 8601:2004, Éléments de données et formats d'échange - Échange d'informations - Représentation des dates et des heures.
ISO C (1999) ISO/IEC 9899:1999, Langages de programmation - C, y compris ISO/IEC 9899:1999/Cor.1:2001(E), ISO/IEC 9899:1999/Cor.2:2004(E) et ISO/IEC 9899:1999/Cor.3.
ISO/IEC 10646-1:2000 ISO/IEC 10646-1:2000, Technologies de l'information - Ensemble de caractères codés universel à octets multiples (UCS) - Partie 1 : Architecture et plan multilingue de base.

Historique des modifications

L'historique des modifications est décrit dans le volume «Rationale (Informative)» de POSIX.1-2017 et dans la section «HISTORIQUE DES MODIFICATIONS» des pages de référence.

Terminologie

Aux fins de POSIX.1-2017, les définitions terminologiques suivantes s'appliquent :

Terminologie français Terminologie anglaise Description
permet can Décrit une fonctionnalité ou un comportement optionnel autorisé, disponible pour l'utilisateur ou l'application. Cette fonctionnalité ou ce comportement est obligatoire pour une implémentation conforme à POSIX.1-2017. Une application peut s'appuyer sur cette fonctionnalité ou ce comportement.
défini par l'implémentation implementation-defined Décrit une valeur ou un comportement non défini par POSIX.1-2017, mais sélectionné par un implémenteur. Cette valeur ou ce comportement peut varier selon les implémentations conformes à POSIX.1-2017. Une application ne doit pas dépendre de l'existence de cette valeur ou de ce comportement. La portabilité d'une application reposant sur une telle valeur ou un tel comportement entre les implémentations conformes n'est pas garantie. L'implémenteur doit documenter une telle valeur ou un tel comportement afin qu'il puisse être utilisé correctement par une application.
hérité legacy Décrit une fonctionnalité ou un comportement conservé pour des raisons de compatibilité avec les applications plus anciennes, mais dont les limitations le rendent inadapté au développement d'applications portables. Les nouvelles applications doivent utiliser d'autres moyens pour obtenir des fonctionnalités équivalentes.
peut may Décrit une fonctionnalité ou un comportement facultatif pour une implémentation conforme à POSIX.1-2017. Une application ne doit pas dépendre de l'existence de cette fonctionnalité ou de ce comportement. La portabilité d'une application qui repose sur une telle fonctionnalité ou un tel comportement entre les implémentations conformes n'est pas garantie. Pour éviter toute ambiguïté, le contraire de may est exprimé par need not, au lieu de may not.
doit shall Pour une implémentation conforme à POSIX.1-2017, décrit une fonctionnalité ou un comportement obligatoire. Une application peut s'appuyer sur l'existence de cette fonctionnalité ou de ce comportement. Pour une application ou un utilisateur, décrit un comportement obligatoire.
devrait should Pour une implémentation conforme à POSIX.1-2017, décrit une fonctionnalité ou un comportement recommandé, mais non obligatoire. Une application ne doit pas dépendre de l'existence de cette fonctionnalité ou de ce comportement. La portabilité d'une application reposant sur une telle fonctionnalité ou un tel comportement entre les implémentations conformes n'est pas garantie. Pour une application, décrit une fonctionnalité ou un comportement constituant une pratique de programmation recommandée pour une portabilité optimale.
non défini undefined Décrit la nature d'une valeur ou d'un comportement non défini par POSIX.1-2017 résultant de l'utilisation d'une construction de programme non valide ou d'une entrée de données non valide. La valeur ou le comportement peut varier selon les implémentations conformes à POSIX.1-2017. Une application ne doit pas dépendre de l'existence ou de la validité de cette valeur ou de ce comportement. La portabilité d'une application reposant sur une valeur ou un comportement particulier entre les implémentations conformes n'est pas garantie.
non spécifié unspecified Décrit la nature d'une valeur ou d'un comportement non spécifié par POSIX.1-2017, résultant de l'utilisation d'une construction de programme valide ou d'une entrée de données valide. La valeur ou le comportement peut varier selon les implémentations conformes à POSIX.1-2017. Une application ne doit pas dépendre de l'existence ou de la validité de la valeur ou du comportement. La portabilité d'une application qui repose sur une valeur ou un comportement particulier entre les implémentations conformes n'est pas garantie.

Définitions et concepts

Les définitions et concepts sont définis dans la section Définitions et concepts généraux.

Portabilité

Certains utilitaires du volume Shell et Utilitaires de POSIX.1-2017 et certaines fonctions du volume Interfaces système de POSIX.1-2017 décrivent des fonctionnalités pouvant ne pas être entièrement portables sur les systèmes répondant aux exigences de conformité POSIX (voir Conformité).

Lorsqu'une fonctionnalité optionnelle, améliorée ou réduite est spécifiée, le texte est grisé et un code en marge identifie la nature de l'option, de l'extension ou de l'avertissement (voir Codes). Pour une portabilité optimale, une application doit éviter ce type de fonctionnalité.

À moins que la tâche principale d'un utilitaire ne soit de produire du contenu textuel sur sa sortie standard, les développeurs d'applications ne doivent pas se fier au format ou au contenu de ce contenu. Lorsque la tâche principale est de fournir ce contenu, mais que le format de sortie est incomplètement spécifié, la description est indiquée avec le code de marge OF et un grisé. Les développeurs d'applications sont avertis de ne pas s'attendre à ce que la sortie d'une telle interface sur un système soit un guide de son comportement sur un autre système.

Codes

Les codes et leur signification sont les suivants. Voir également la notation des codes de marge :

Code de marge Code Description
[ADV] Advisory Information La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge ADV dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge ADV.
[BE] Batch Environment Services and Utilities La fonctionnalité décrite est facultative. Le cas échéant, les utilitaires sont identifiés par la légende de marge BE dans la section SYNOPSIS. Lorsqu'une sémantique supplémentaire s'applique à un utilitaire, le contenu est identifié par la légende de marge BE.
[CD] C-Language Development Utilities La fonctionnalité décrite est facultative. Le cas échéant, les utilitaires sont identifiés par la légende de marge CD dans la section SYNOPSIS. Lorsqu'une sémantique supplémentaire s'applique à un utilitaire, le contenu est identifié par la légende de marge CD.
[CPT] Process CPU-Time Clocks La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge CPT dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge CPT.
[CX] Extension to the ISO C standard La fonctionnalité décrite est une extension de la norme ISO C. Les développeurs d'applications peuvent utiliser une extension, car elle est prise en charge par tous les systèmes conformes à POSIX.1-2017. Chaque fonction ou en-tête de la norme ISO C est accompagné d'une mention indiquant que « tout conflit est involontaire». Cette mention vise à faire référence à un conflit direct. POSIX.1-2017 agit en partie comme un profil de la norme ISO C et peut choisir de restreindre davantage les comportements autorisés par la norme ISO C. De telles limitations et autres différences compatibles ne sont pas considérées comme des conflits, même en l'absence d'une marque CX. Ces marques sont données à titre indicatif uniquement. Lorsqu'une sémantique supplémentaire s'applique à une fonction ou à un en-tête, le contenu est identifié par la légende de marge CX.
[FD] FORTRAN Development Utilities La fonctionnalité décrite est facultative. Le cas échéant, les utilitaires sont identifiés par la légende de marge FD dans la section SYNOPSIS. Lorsqu'une sémantique supplémentaire s'applique à un utilitaire, le contenu est identifié par la légende de marge FD.
[FR] FORTRAN Runtime Utilities La fonctionnalité décrite est facultative. Le cas échéant, les utilitaires sont identifiés par la légende de marge FR dans la section SYNOPSIS. Lorsqu'une sémantique supplémentaire s'applique à un utilitaire, le contenu est identifié par la légende de marge FR.
[FSC] File Synchronization La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge FSC dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge FSC.
[IP6] IPV6 La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge IP6 dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge IP6.
[MC1] Non-Robust Mutex Priority Protection or Non-Robust Mutex Priority Inheritance or Robust Mutex Priority Protection or Robust Mutex Priority Inheritance La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Il s'agit d'une notation abrégée pour les combinaisons de plusieurs codes d'option. Le cas échéant, les fonctions sont indiquées par la légende de marge MC1 dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge MC1. Voir Notation des codes de marge.
[ML] Process Memory Locking La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge ML dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge ML.
[MLR] Range Memory Locking La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge MLR dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge MLR.
[MON] Monotonic Clock La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge MON dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge MON.
[MSG] Message Passing La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge MSG dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge MSG.
[MX] IEC 60559 Floating-Point La fonctionnalité décrite est facultative. Elle est imposée par la norme ISO C uniquement pour les implémentations définissant __STDC_IEC_559__.
[MXX] IEC 60559 Floating-Point Extension La fonctionnalité décrite est facultative. Elle fait partie de l'option virgule flottante de la norme CEI 60559, mais constitue une extension de la norme ISO C.
[OB] Obsolescent La fonctionnalité décrite peut être supprimée dans une future version de ce volume de POSIX.1-2017. Les applications POSIX et XSI strictement conformes ne doivent pas utiliser de fonctionnalités obsolètes. Le cas échéant, le matériel est identifié à l'aide de la légende de marge OB.
[OF] Output Format Incompletely Specified La fonctionnalité décrite est une extension XSI. Le format de la sortie produite par l'utilitaire n'est pas entièrement spécifié. Il est donc impossible de la traiter ultérieurement de manière cohérente. Parmi les problèmes courants, on trouve des longueurs de chaînes inconnues et des délimiteurs de champs non spécifiés. Le cas échéant, le contenu est identifié par la légende de marge OF.
[OH] Optional Header Dans la section SYNOPSIS de certaines interfaces du volume Interfaces système de POSIX.1-2017, un entête inclus est marqué comme dans l'exemple suivant :

  1. [OH] #include <sys/types.h>
  2.  
  3. #include <fcntl.h>
  4. int open(const char *path, int oflag, ...);

La légende de marge OH indique que l'en-tête facultatif définit des constantes qui seront nécessaires si la fonction est appelée avec certains paramètres d'indicateur; elle peut donc être requise pour certaines des fonctionnalités décrites, mais n'est pas nécessaire autrement.
[PIO] Prioritized Input and Output La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont indiquées par la légende de marge PIO dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge PIO.

[PS] Process Scheduling La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge PS dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge PS.
[RPI] Robust Mutex Priority Inheritance La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge RPI dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge RPI.
[RPP] Robust Mutex Priority Protection La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge RPP dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge RPP.
[RS] Raw Sockets La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge RS dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge RS.
[SD] Software Development Utilities La fonctionnalité décrite est facultative. Le cas échéant, les utilitaires sont identifiés par la légende de marge SD dans la section SYNOPSIS. Lorsqu'une sémantique supplémentaire s'applique à un utilitaire, le contenu est identifié par la légende de marge SD.
[SHM] Shared Memory Objects La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge SHM dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge SHM.
[SIO] Synchronized Input and Output La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge SIO dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge SIO.
[SPN] Spawn La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge SPN dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge SPN.
[SS] Process Sporadic Server La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge SS dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge SS.
[TCT] Thread CPU-Time Clocks La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge TCT dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge TCT.
[TEF] Trace Event Filter La fonctionnalité décrite est facultative. Elle dépend de la prise en charge de l'option Trace. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge TEF dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge TEF.
[TPI] Non-Robust Mutex Priority Inheritance La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge TPI dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge TPI.
[TPP] Non-Robust Mutex Priority Protection La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge TPP dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge TPP.
[TPS] Thread Execution Scheduling La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont indiquées par la légende de marge TPS pour la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge TPS.
[TRC] Trace La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge TRC dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge TRC.
[TRI] Trace Inherit La fonctionnalité décrite est facultative. Elle dépend de la prise en charge de l'option Trace. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge TRI dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge TRI.
[TRL] Trace Log La fonctionnalité décrite est facultative. Elle dépend de la prise en charge de l'option Trace. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge TRL dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge TRL.
[TSA] Thread Stack Address Attribute La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont identifiées par la légende de marge TSA pour la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge TSA.
[TSH] Thread Process-Shared Synchronization La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge TSH dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge TSH.
[TSP] Thread Sporadic Server La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge TSP dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge TSP.
[TSS] Thread Stack Size Attribute La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge TSS dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge TSS.
[TYM] Typed Memory Objects La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge TYM dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge TYM.
[UP] User Portability Utilities La fonctionnalité décrite est facultative. Le cas échéant, les utilitaires sont signalés par la légende de marge supérieure dans la section SYNOPSIS. Lorsqu'une sémantique supplémentaire s'applique à un utilitaire, le contenu est identifié par la légende de marge supérieure.
[UU] UUCP Utilities La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende UU dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende UU.
[XSI] X/Open System Interfaces La fonctionnalité décrite fait partie de l'option Interfaces X/Open Systems. La fonctionnalité marquée XSI est une extension de la norme ISO C. Les développeurs d'applications peuvent utiliser ces extensions en toute confiance sur tous les systèmes prenant en charge l'option Interfaces X/Open System. Si une section SYNOPSIS entière est grisée et marquée XSI, toutes les fonctionnalités décrites dans cette page de référence constituent une extension. Voir Conformité XSI.
[XSR] XSI STREAMS La fonctionnalité décrite est facultative. Elle constitue également une extension de la norme ISO C. Le cas échéant, les fonctions sont signalées par la légende de marge XSR dans la section SYNOPSIS. Lorsqu'une fonction est soumise à une sémantique supplémentaire, le contenu est identifié par la légende de marge XSR.

Notation des codes de marge

Certaines fonctionnalités décrites dans POSIX.1-2017 dépendent de la prise en charge de plusieurs options, ou peuvent dépendre indépendamment de plusieurs options. La notation suivante pour les codes de marge est utilisée pour désigner les cas suivants :

Une fonctionnalité dépend d'une ou deux options

Dans ce cas, les codes de marge sont séparés par un espace ; par exemple :

Code de marge Description
SHM Cette fonctionnalité nécessite uniquement la prise en charge de l'option Objets de mémoire partagée.
SHM TYM Cette fonctionnalité nécessite la prise en charge des options Objets de mémoire partagée et Objets de mémoire typés ; autrement dit, une application utilisant cette fonctionnalité n'est portable qu'entre les implémentations offrant les deux options.

Une fonctionnalité dépendante de l'une ou l'autre des options indiquées

Dans ce cas, les codes de marge comportent un séparateur « |» pour indiquer le OU logique ; par exemple :

Code de marge Description
SHM|TYM Cette fonctionnalité dépend de la prise en charge des options Objets de mémoire partagée ou Objets de mémoire typés ; autrement dit, une application utilisant cette fonctionnalité est portable entre les implémentations qui proposent une ou plusieurs de ces options.

Fonctionnalité dépendant de plus de deux options

Les notations abrégées suivantes sont utilisées :

Code de marge Description
MC1 Le code de marge MC1 est l'abréviation de TPP|TPI|RPP|RPI. Les fonctionnalités grisées avec ce code de marge nécessitent la prise en charge de l'option Protection de priorité Mutex non robuste, de l'option Héritage de priorité Mutex non robuste, de l'option Protection de priorité Mutex robuste ou de l'option Héritage de priorité Mutex robuste.

Sections importantes dépendant d'une option

Lorsque de larges sections de texte dépendent de la prise en charge d'une option, un bloc de texte d'introduction est fourni et grisé en conséquence ; par exemple :

Code de marge Description
XSI Cette section décrit les extensions permettant la communication interprocessus. Les fonctionnalités décrites ici seront fournies sur les implémentations prenant en charge l'option XSI (le reste de cette section n'est pas détaillé).


Dernière mise à jour : Jeudi, le 27 mars 2025