Section courante

A propos

Section administrative du site

Conformité

Conformité de l'implémentation

Conformément à la norme POSIX.1-2017, les exigences de conformité de l'implémentation décrites dans cette page s'appliquent.

Prérequis

Une implémentation conforme doit répondre à tous les critères suivants :

Remarque : Si la méthode documentée de configuration d'un environnement conforme nécessite la définition d'une ou plusieurs variables d'environnement, leurs valeurs ne peuvent pas contenir de caractères d'espacement, car la fonction confstr() doit pouvoir les renvoyer dans une liste de paires variable=valeur séparées par des espaces. Voir XSH confstr.

Documentation

Un document de conformité contenant les informations suivantes doit être disponible pour toute implémentation revendiquant la conformité à POSIX.1-2017. Le document de conformité doit avoir la même structure que POSIX.1-2017, les informations étant présentées dans les sections et sous-sections appropriées. Les sections et sous-sections composées uniquement de titres de sections subordonnées, sans autre information, ne sont pas requises. Le document de conformité ne doit pas contenir d'informations sur des fonctionnalités ou fonctionnalités étendues hors du champ d'application de POSIX.1-2017.

Le document de conformité doit contenir une déclaration indiquant le nom complet, le numéro et la date de la norme applicable. Il peut également répertorier les normes logicielles internationales disponibles pour une application POSIX conforme. Les caractéristiques applicables, lorsque la documentation est requise par l'une de ces normes ou par des normes d'organismes gouvernementaux, peuvent également être incluses.

Le document de conformité doit décrire les valeurs limites des entêtes <limits.h> et <unistd.h>, en précisant les valeurs, les conditions de variation de ces valeurs et les limites de ces variations, le cas échéant.

Le document de conformité doit décrire le comportement de l'implémentation pour toutes les fonctionnalités définies par l'implémentation dans POSIX.1-2017. Cette exigence doit être satisfaite en listant ces fonctionnalités et en fournissant soit une référence spécifique à la documentation du système, soit la syntaxe et la sémantique complètes de ces fonctionnalités. Lorsque la valeur ou le comportement de l'implémentation est conçu pour être variable ou personnalisé à chaque instanciation du système, le fournisseur de l'implémentation doit documenter la nature et les intervalles autorisées de cette variation.

Le document de conformité peut spécifier le comportement de l'implémentation pour les fonctionnalités pour lesquelles POSIX.1-2017 stipule que les implémentations peuvent varier ou pour lesquelles les fonctionnalités sont identifiées comme non définies ou non spécifiées.

Le document de conformité ne doit pas contenir de documentation autre que celle spécifiée dans les paragraphes précédents, sauf si une telle documentation est spécifiquement autorisée ou requise par d'autres dispositions de POSIX.1-2017.

Les expressions «doit documenter» ou «doit être documenté» dans POSIX.1-2017 signifient que la documentation de la fonctionnalité doit figurer dans le document de conformité, comme décrit précédemment, sauf si le document de conformité contient une référence explicite indiquant où trouver ces informations dans la documentation du système.

La documentation du système doit également contenir les informations figurant dans le document de conformité.

Conformité POSIX

Une implémentation conforme doit répondre aux critères suivants de conformité POSIX.

Interfaces système POSIX

Les exigences suivantes s'appliquent aux interfaces système (fonctions et entêtes) :

Si l'une des constantes symboliques _POSIX_TRACE_EVENT_FILTER, _POSIX_TRACE_LOG ou _POSIX_TRACE_INHERIT est définie avec une valeur différente de -1, la constante symbolique _POSIX_TRACE doit également être définie avec une valeur différente de -1.

Si l'option Informations consultatives est prise en charge, au moins un système de fichiers doit prendre en charge cette fonctionnalité.

Interpréteur de commande et utilitaires POSIX

Les exigences suivantes s'appliquent à l'interpréteur de commande et aux utilitaires :

Des options de liaisons de langage et d'utilitaires de développement supplémentaires peuvent être fournies dans d'autres normes connexes ou dans une future version de la présente norme. Dans le premier cas, des constantes symboliques supplémentaires de même forme générale que celles présentées dans cette sous-section doivent être définies par le document normatif concerné et mises à disposition de l'application sans nécessiter de mise à jour de POSIX.1-2017.

Conformité XSI

[XSI] Cette section décrit les critères de conformité des implémentations à l'option X/Open System Interfaces (XSI) (voir XSI). Les fonctionnalités décrites dans cette section doivent être fournies pour les implémentations prenant en charge l'option XSI (le reste de cette section n'est pas détaillé).

POSIX.1-2017 décrit les utilitaires, fonctions et fonctionnalités offerts aux programmes d'application par l'option X/Open System Interfaces (XSI). Une implémentation conforme à XSI doit satisfaire aux critères de conformité POSIX et aux exigences suivantes listées dans cette page.

Les implémentations conformes à XSI doivent définir la constante symbolique _XOPEN_UNIX sur une valeur autre que -1 et doivent définir la constante symbolique _XOPEN_VERSION sur la valeur 700.

Interfaces système XSI

Les exigences suivantes s'appliquent aux interfaces système lorsque l'option XSI est prise en charge :

Conformité de l'interpréteur de commande et des utilitaires XSI

Les exigences suivantes s'appliquent au interpréteur de commande et aux utilitaires lorsque l'option XSI est prise en charge :

Groupes d'options

Un groupe d'options est un ensemble de fonctions ou d'options connexes définies dans le volume « Interfaces système » de POSIX.1-2017.

Si une implémentation prend en charge un groupe d'options, le système doit prendre en charge le comportement fonctionnel décrit ici.

Si une implémentation ne prend pas en charge un groupe d'options, le système n'a pas besoin de prendre en charge le comportement fonctionnel décrit ici.

Considérations relatives au sous-profilage

Les normes de profilage prenant en charge des exigences fonctionnelles inférieures à celles requises par POSIX.1-2017 peuvent sous-ensembles les fonctionnalités obligatoires et facultatives requises pour la conformité POSIX (voir Conformité POSIX) ou XSI (voir Conformité XSI). Ces profils doivent organiser ces sous-ensembles en groupes d'options de sous-profilage.

Les considérations relatives au sous-profilage XRAT (informatives) décrivent un ensemble représentatif de ces groupes d'options de sous-profilage destinés aux profils applicables aux systèmes temps réel spécialisés. POSIX.1-2017 n'exige pas que la présence de groupes d'options de sous-profilage soit testable à la compilation (sous forme de symboles définis dans un en-tête) ou à l'exécution (via sysconf() ou getconf).

Un groupe d'options de sous-profilage peut fournir des fonctionnalités système de base dont dépendent d'autres groupes d'options de sous-profilage et d'autres options.1 Si un profil POSIX.1-2017 n'exige pas qu'une implémentation fournisse un groupe d'options de sous-profilage fournissant des fonctionnalités utilisées par un groupe d'options de sous-profilage (ou une option) requis,2 ce profil doit spécifier3 tous les éléments suivants :

Si l'un des cas ci-dessus résulte du fait que le profil ne requiert pas une interface requise par POSIX.1-2017.

Les règles supplémentaires suivantes s'appliquent à tous les profils POSIX.1-2017 :

Groupes d'options XSI

[XSI] Cette section décrit les groupes d'options permettant de prendre en charge la définition de la conformité XSI dans le volume Interfaces système de POSIX.1-2017. Les fonctionnalités décrites dans cette section seront fournies sur les implémentations prenant en charge l'option XSI et le groupe d'options approprié (le reste de cette section n'étant pas détaillé).

Les groupes d'options suivants sont définis :

Cryptage

Le groupe d'options de chiffrement est représenté par la constante symbolique _XOPEN_CRYPT. Il comprend les fonctions suivantes :

Ces fonctions sont marquées CRYPT.

En raison des restrictions d'exportation de l'algorithme de décodage dans certains pays, la disponibilité de ces fonctions peut être limitée pour les implémentations. Toutes les fonctions du groupe d'options de chiffrement peuvent donc renvoyer [ENOSYS] ou, alternativement, encrypt() doit renvoyer [ENOSYS] pour l'opération de déchiffrement.

Une implémentation revendiquant la conformité à ce groupe d'options doit définir _XOPEN_CRYPT sur une valeur autre que -1.

Temps réel

Le groupe d'options Temps réel est représenté par la constante symbolique _XOPEN_REALTIME.

Ce groupe d'options comprend un ensemble de fonctions temps réel issues des options POSIX.1-2017 (voir Options).

Lorsque des fonctions entières sont incluses dans le groupe d'options, la section NAME est marquée avec REALTIME. Lorsqu'une sémantique supplémentaire a été ajoutée à des pages existantes, le nouveau contenu est identifié par la légende de marge appropriée pour l'option sous-jacente définie dans POSIX.1-2017.

Une implémentation revendiquant la conformité à ce groupe d'options doit définir _XOPEN_REALTIME sur une valeur autre que -1.

Ce groupe d'options comprend l'ensemble des options POSIX.1-2017 suivantes (voir Options) :

Constante Description
_POSIX_FSYNC Indique la prise en charge de la fonction fsync(), qui force l'écriture des données d'un fichier sur le disque pour garantir leur persistance.
_POSIX_MEMLOCK Indique la prise en charge de la fonction mlock(), permettant de verrouiller une zone de mémoire en RAM afin d'éviter qu'elle soit paginée sur le disque.
_POSIX_MEMLOCK_RANGE Indique la prise en charge de mlock() et munlock() sur une plage spécifique d'adresses mémoire, plutôt que sur l'intégralité du processus.
_POSIX_MESSAGE_PASSING Indique la prise en charge de la communication interprocessus (IPC) par files de messages (mq_open(), mq_send(), mq_receive()).
_POSIX_PRIORITIZED_IO Indique la prise en charge des entrées/sorties prioritaires, permettant aux processus d'effectuer des opérations de lecture/écriture avec des niveaux de priorité.
_POSIX_PRIORITY_SCHEDULING Indique la prise en charge de l'ordonnancement basé sur les priorités en temps réel (sched_setscheduler(), sched_getscheduler()).
_POSIX_SHARED_MEMORY_OBJECTS Indique la prise en charge de la mémoire partagée (shm_open(), shm_unlink()), permettant aux processus de partager des segments de mémoire.
_POSIX_SYNCHRONIZED_IO Indique la prise en charge des entrées/sorties synchronisées, garantissant que les données sont réellement écrites sur le support avant que l'écriture ne soit considérée comme terminée.

Si la constante symbolique _XOPEN_REALTIME est définie pour avoir une valeur autre que -1, alors les constantes symboliques suivantes doivent être définies par l'implémentation pour avoir la valeur 200809L :

Constante Description
_POSIX_MEMLOCK Indique la prise en charge de mlock() et munlock(), permettant de verrouiller des segments de mémoire en RAM pour éviter leur pagination sur le disque.
_POSIX_MEMLOCK_RANGE Indique la prise en charge du verrouillage d'une plage spécifique de mémoire avec mlock() et munlock(), au lieu de l'ensemble du processus.
_POSIX_MESSAGE_PASSING Indique la prise en charge de la communication interprocessus via des files de messages (mq_open(), mq_send(), mq_receive()).
_POSIX_PRIORITY_SCHEDULING Indique la prise en charge de l'ordonnancement en temps réel basé sur les priorités (sched_setscheduler(), sched_getscheduler()).
_POSIX_SHARED_MEMORY_OBJECTS Indique la prise en charge de la mémoire partagée (shm_open(), shm_unlink()), permettant aux processus de partager des segments de mémoire.
_POSIX_SYNCHRONIZED_IO Indique la prise en charge des entrées/sorties synchronisées, assurant que les données sont réellement écrites sur le support avant que l'écriture ne soit considérée comme terminée.

La fonctionnalité associée à _POSIX_FSYNC doit toujours être prise en charge sur les systèmes conformes XSI.

La prise en charge de _POSIX_PRIORITIZED_IO sur les systèmes conformes XSI est facultative. Si _POSIX_PRIORITIZED_IO est prise en charge, les opérations d'entrées/sorties désynchronisés effectuées par aio_read(), aio_write() et lio_listio() doivent être soumises avec une priorité égale à la priorité d'ordonnancement de base moins aiocbp->aio_reqprio. Si la planification de l'exécution des processus légers n'est pas prise en charge, la priorité d'ordonnancement de base est celle du processus appelant ; sinon, la priorité d'ordonnancement de base est celle du processus léger appelant. L'implémentation doit également documenter les fichiers pour lesquels la priorisation des entrées/sorties est prise en charge.

Temps réel avancé

Une implémentation revendiquant la conformité à ce groupe d'options doit également prendre en charge le groupe d'options Temps réel.

Lorsque des fonctions entières sont incluses dans le groupe d'options, la section NAME est marquée avec la mention TEMPS RÉEL AVANCÉ. Lorsqu'une sémantique supplémentaire a été ajoutée à des pages existantes, le nouveau contenu est identifié par la légende de marge appropriée pour l'option sous-jacente définie dans POSIX.1-2017.

Ce groupe d'options comprend l'ensemble des options suivantes, issues de POSIX.1-2017 (voir Options) :

Constante Description
_POSIX_ADVISORY_INFO Indique la prise en charge des informations sur les verrous et les verrous de fichier dans le contexte de la gestion des fichiers, permettant des notifications pour des verrous partagés ou exclusifs.
_POSIX_CPUTIME Indique la prise en charge de la surveillance de l'utilisation du temps processeur par un processus à l'aide de la fonction times(), permettant de mesurer le temps d'exécution.
_POSIX_MONOTONIC_CLOCK Indique la prise en charge d'un horodatage basé sur un compteur de temps monotone (ne pouvant que croître), souvent utilisé pour mesurer des intervalles de temps sans être affecté par les modifications de l'heure système.
_POSIX_SPAWN Indique la prise en charge de la fonction posix_spawn(), utilisée pour créer de nouveaux processus en remplacement des fonctions fork() et exec(), avec des options supplémentaires de contrôle.
_POSIX_SPORADIC_SERVER Indique la prise en charge du serveur sporadique, un modèle de gestion de l'exécution des tâches qui permet des exécutions périodiques et irrégulières en fonction de la priorité.
_POSIX_TYPED_MEMORY_OBJECTS Indique la prise en charge des objets de mémoire typés (comme ceux créés avec mmap()), permettant un contrôle et une manipulation plus fins de la mémoire partagée entre les processus.

Si l'implémentation prend en charge le groupe d'options en temps réel avancé, les constantes symboliques suivantes doivent être définies par l'implémentation pour avoir la valeur 200809L :

Constante Description
_POSIX_ADVISORY_INFO Indique la prise en charge des mécanismes de gestion des informations sur les verrous pour les fichiers, en permettant des verrous consultatifs afin d'éviter des conflits d'accès concurrentiels.
_POSIX_CPUTIME Indique la prise en charge de la fonction times() permettant de mesurer le temps CPU utilisé par un processus, souvent pour analyser l'efficacité d'un programme.
_POSIX_MONOTONIC_CLOCK Indique la prise en charge d'un horloge monotone avançant de manière continue et n'est pas affectée par les changements d'heure système, souvent utilisée pour mesurer des intervalles de temps.
_POSIX_SPAWN Indique la prise en charge de la fonction posix_spawn(), qui permet de créer de nouveaux processus avec des options supplémentaires, et souvent comme alternative à fork() et exec().
_POSIX_SPORADIC_SERVER Indique la prise en charge des serveurs sporadiques, un modèle de gestion de l'exécution des tâches qui permet des exécutions périodiques et irrégulières, adapté à des systèmes à forte priorité.
_POSIX_TYPED_MEMORY_OBJECTS Indique la prise en charge des objets de mémoire typés dans un espace mémoire partagé, permettant une gestion plus précise des blocs de mémoire dans des contextes interprocessus.

Si la constante symbolique _POSIX_SPORADIC_SERVER est définie, la constante symbolique _POSIX_PRIORITY_SCHEDULING doit également être définie par l'implémentation avec la valeur 200809L.

Processus légers en temps réel

Le groupe d'options des processus légers en temps réel est représenté par la constante symbolique _XOPEN_REALTIME_THREADS.

Ce groupe d'options comprend les options suivantes, issues de POSIX.1-2017 (voir Options) :

Constante Description
_POSIX_THREAD_PRIO_INHERIT Indique la prise en charge de l'héritage de la priorité des processus légers. Lorsque ce mécanisme est activé, les processus légers attendant un verrou héritent de la priorité du processus léger détenant ce verrou.
_POSIX_THREAD_PRIO_PROTECT Indique la prise en charge de la protection de la priorité des processus légers. Ce mécanisme empêche la priorité d'un processus léger de diminuer lorsque ce dernier détient un verrou, afin d'éviter des inversions de priorité.
_POSIX_THREAD_PRIORITY_SCHEDULING Indique la prise en charge de l'ordonnancement des processus légers basé sur les priorités. Cela permet de contrôler l'ordre d'exécution des processus légers en fonction de leurs priorités respectives.
_POSIX_THREAD_ROBUST_PRIO_INHERIT Indique la prise en charge de l'héritage robuste de la priorité des processus légers. Cela s'applique dans les systèmes qui utilisent la gestion robuste des verrous, garantissant que la priorité d'un processus léger est héritée de manière sûre en cas de défaillance.
_POSIX_THREAD_ROBUST_PRIO_PROTECT Indique la prise en charge de la protection robuste de la priorité des processus légers. Cela protège la priorité des processus légers lors de l'acquisition de verrous dans les systèmes où la gestion robuste des verrous est utilisée, évitant ainsi les inversions de priorité.

Le cas échéant, des pages entières sont marquées «TRANSACTIONS EN TEMPS RÉEL», accompagnées de la légende de marge d'option appropriée pour la section SYNOPSIS (voir Codes).

Une implémentation revendiquant la conformité à ce groupe d'options doit définir _XOPEN_REALTIME_THREADS sur une valeur autre que -1.

Si le symbole _XOPEN_REALTIME_THREADS est défini avec une valeur autre que -1, les options suivantes doivent également être définies par l'implémentation avec la valeur 200809L :

Constante Description
_POSIX_THREAD_PRIO_INHERIT Indique la prise en charge de l'héritage de la priorité des processus léger. Lorsque ce mécanisme est activé, un processus léger héritera de la priorité d'un autre processus léger si ce dernier détient un verrou que le premier processus courant souhaite acquérir.
_POSIX_THREAD_PRIO_PROTECT Indique la prise en charge de la protection de la priorité des processus légers. Cela empêche un processus léger de voir sa priorité diminuée lorsqu'il détient un verrou, garantissant ainsi que la priorité du processus léger est protégée contre les inversions de priorité.
_POSIX_THREAD_PRIORITY_SCHEDULING Indique la prise en charge de l'ordonnancement des processus légers basé sur leurs priorités. Cela permet aux systèmes de planifier l'exécution des processus légers en fonction de leur niveau de priorité.
_POSIX_THREAD_ROBUST_PRIO_INHERIT Indique la prise en charge de l'héritage robuste de la priorité des processus légers dans les systèmes où les verrous sont gérés de manière robuste, assurant que les priorités des processus légers sont héritées de façon fiable même en cas de défaillance.
_POSIX_THREAD_ROBUST_PRIO_PROTECT Indique la prise en charge de la protection robuste de la priorité des processus légers. Cela empêche la priorité d'un processus léger d'être affectée lorsqu'il détient un verrou dans un environnement avec gestion robuste des verrous. Cela prévient les inversions de priorité.

Processus léger temps réel avancés

Une implémentation revendiquant la conformité à ce groupe d'options doit également prendre en charge le groupe d'options Processus légers temps réel.

Lorsque des fonctions entières sont incluses dans le groupe d'options, la section NAME est marquée avec la mention PROCESSUS LEGER TEMPS RÉEL AVANCÉS. Lorsque des sémantiques supplémentaires ont été ajoutées à des pages existantes, le nouveau contenu est identifié par la légende de marge appropriée pour l'option sous-jacente définie dans POSIX.1-2017.

Ce groupe d'options comprend l'ensemble des options suivantes, issues de POSIX.1-2017 (voir Options) :

Constante Description
_POSIX_THREAD_CPUTIME Indique la prise en charge du suivi du temps CPU utilisé par un processus léger. Ce mécanisme permet de mesurer le temps d'exécution d'un processus léger en particulier, en utilisant des fonctions comme clock() ou pthread_getcpuclockid().
_POSIX_THREAD_SPORADIC_SERVER Indique la prise en charge du modèle de serveur sporadique pour les processus légers. Ce modèle permet d'exécuter des tâches de manière irrégulière, mais en tenant compte des priorités et des contraintes temporelles spécifiques, souvent utilisé dans les systèmes embarqués ou les systèmes en temps réel.

Si la constante symbolique _POSIX_THREAD_SPORADIC_SERVER est définie avec la valeur 200809L, la constante symbolique _POSIX_THREAD_PRIORITY_SCHEDULING doit également être définie par l'implémentation avec la valeur 200809L.

Si l'implémentation prend en charge le groupe d'options Advanced Realtime Threads, les constantes symboliques suivantes doivent être définies par l'implémentation avec la valeur 200809L :

Constante Description
_POSIX_THREAD_CPUTIME Indique la prise en charge de l'utilisation du temps processeur par un processus léger spécifique. Cela permet de mesurer le temps CPU consommé par un processus léger, en utilisant des fonctions comme pthread_getcpuclockid() et clock_gettime().
_POSIX_THREAD_SPORADIC_SERVER Indique la prise en charge d'un modèle de serveur sporadique pour les processus légers. Ce modèle est utilisé dans les systèmes temps réel, où un processus léger peut être exécuté de manière sporadique en fonction des priorités et des conditions de planification.

Traçage

Ce groupe d'options comprend un ensemble de fonctions de traçage issues des options de POSIX.1-2017 (voir Options).

Lorsque des fonctions complètes sont incluses dans le groupe d'options, la section NAME est marquée avec TRACING. Lorsque des sémantiques supplémentaires ont été ajoutées à des pages existantes, le nouveau contenu est identifié par la légende de marge appropriée à l'option sous-jacente définie dans POSIX.1-2017.

Ce groupe d'options comprend l'ensemble des options suivantes de POSIX.1-2017 (voir Options) :

Constante Description
_POSIX_TRACE Indique la prise en charge des mécanismes de traçabilité dans le système, permettant de suivre l'exécution des processus, des processus légers et des événements du système pour des fins de diagnostic et de performance.
_POSIX_TRACE_EVENT_FILTER Indique la prise en charge de la possibilité d'appliquer des filtres sur les événements traçables, permettant de spécifier quels événements doivent être capturés et enregistrés, facilitant ainsi une analyse ciblée.
_POSIX_TRACE_LOG Indique la prise en charge de la journalisation des événements de trace, permettant d'enregistrer et de stocker les informations collectées lors de l'exécution des processus ou des processus légers pour une analyse ultérieure.
_POSIX_TRACE_INHERIT Indique la prise en charge de l'héritage des paramètres de traçabilité d'un processus parent vers ses processus enfants, garantissant la continuité du suivi des événements sur toute la hiérarchie des processus.

Si l'implémentation prend en charge le groupe d'options de traçage, les constantes symboliques suivantes doivent être définies par l'implémentation pour avoir la valeur 200809L :

Constante Description
_POSIX_TRACE Indique la prise en charge du système de traçabilité des événements dans le système POSIX, permettant de suivre et d'analyser les activités des processus, comme les appels systèmes et les interactions entre les processus.
_POSIX_TRACE_EVENT_FILTER Indique la prise en charge de la possibilité de filtrer les événements de trace. Cela permet de spécifier quels types d'événements doivent être capturés pour la traçabilité, offrant ainsi un contrôle précis sur les données enregistrées.
_POSIX_TRACE_LOG Indique la prise en charge de la journalisation des événements de trace. Cela permet de stocker les informations sur les événements capturés dans des fichiers journaux, facilitant l'analyse et le diagnostic ultérieur.
_POSIX_TRACE_INHERIT Indique la prise en charge de l'héritage des paramètres de traçabilité d'un processus parent vers ses processus enfants. Cela garantit que la traçabilité est maintenue à travers la hiérarchie des processus.

XSI STREAMS (Flux XSI)

[OB XSR] Cette section décrit le groupe d'options XSI STREAMS, représenté par la constante symbolique _XOPEN_STREAMS. Les fonctionnalités décrites dans cette section sont disponibles pour les implémentations prenant en charge l'option XSI STREAMS (le reste de cette section n'est pas détaillé).

Ce groupe d'options inclut les fonctionnalités liées à STREAMS, un mécanisme uniforme pour la mise en oeuvre de services réseau et d'autres d'entrées/sorties basées sur des caractères, comme décrit dans XSH STREAMS.

Il inclut les fonctions suivantes :

Fonction Description
fattach() Attache un flux de données à un descripteur de fichier pour l'utiliser avec des canaux de communication inter-processus (IPC) dans des systèmes qui supportent des flux.
fdetach() Détache un flux de données précédemment attaché à un descripteur de fichier, ce qui permet de libérer le descripteur pour d'autres utilisations.
getmsg() Permet de recevoir un message depuis un canal de communication en utilisant des descripteurs de fichiers. Utilisé dans les systèmes de communication basés sur les messages.
getpmsg() Semblable à getmsg(), mais utilisée pour recevoir un message avec des informations supplémentaires sur les priorités dans les messages en file d'attente.
ioctl() Permet d'envoyer des commandes de contrôle spécifiques à un périphérique ou à un fichier spécial, comme des configurations de périphériques ou des ajustements de comportement de fichiers.
isastream() Vérifie si un descripteur de fichier est associé à un flux (stream), ce qui est utilisé dans les communications basées sur des flux dans les systèmes UNIX.
putmsg() Permet d'envoyer un message sur un flux en utilisant des descripteurs de fichier, souvent dans des systèmes de communication inter-processus.
putpmsg() Semblable à putmsg(), mais permet d'envoyer un message avec des informations supplémentaires sur les priorités des messages dans les systèmes de messagerie.

et l'entête <stropts.h>.

Le cas échéant, les pages entières sont marquées FLUX, avec la légende de marge d'option appropriée pour la section SYNOPSIS (voir Codes). Lorsqu'une sémantique supplémentaire a été ajoutée à des pages existantes, le nouveau contenu est identifié par la légende de marge appropriée pour l'option sous-jacente définie dans POSIX.1-2017.

Une implémentation revendiquant la conformité à ce groupe d'options doit définir _XOPEN_STREAMS sur une valeur autre que -1.

Options

Les constantes symboliques définies dans <unistd.h>, Constantes pour les options et les groupes d'options, reflètent les options d'implémentation de POSIX.1-2017. Ces symboles permettent à l'application de déterminer laquelle des trois catégories de prise en charge des fonctionnalités optionnelles est fournie par l'implémentation.

Si une option n'est pas prise en charge à la compilation, une application tentant d'utiliser un élément associé uniquement à cette option est considérée comme nécessitant une extension. Sauf indication contraire explicite, le comportement des fonctions associées à une option non prise en charge à l'exécution n'est pas spécifié, et une application utilisant ces fonctions sans avoir préalablement vérifié fpathconf(), pathconf() ou sysconf est considérée comme nécessitant une extension.

Des codes de marge sont définis pour chaque option (voir Codes).

Interfaces système

Consultez <unistd.h>, Constantes pour les options et les groupes d'options pour la liste des options.

Interpréteur de commande et utilitaires

Chacun de ces symboles doit être considéré comme un nom valide par l'implémentation. Consultez <unistd.h>, Constantes pour les options et les groupes d'options.

Les noms littéraux indiqués ci-dessous s'appliquent uniquement à l'utilitaire getconf.

Nom Description
POSIX2_C_DEV [CD] Le système prend en charge l'option Utilitaires de développement en langage C.
Les utilitaires de l'option Utilitaires de développement en langage C sont utilisés pour le développement d'applications en langage C, notamment la compilation ou la traduction de code source C, ainsi que pour la création de générateurs de programmes complexes pour des tâches lexicales simples et le traitement de grammaires hors contexte.
Les utilitaires listés ci-dessous peuvent être fournis par un système conforme ; toutefois, tout système se déclarant conforme à l'option Utilitaires de développement en langage C doit fournir tous les utilitaires listés.
  • c99
  • lex
  • yacc
POSIX2_CHAR_TERM Le système prend en charge l'option «Caractéristiques du terminal». Cette valeur n'a pas besoin d'être présente sur un système ne prenant pas en charge l'option « Utilitaires de portabilité utilisateur».
Le cas échéant, la dépendance est indiquée dans la description de l'utilitaire.
Cette option s'applique uniquement aux systèmes prenant en charge l'option « Utilitaires de portabilité utilisateur ». Si elle est prise en charge, le système prend en charge au moins un type de terminal capable d'effectuer toutes les opérations décrites dans POSIX.1-2017 ; voir « Périphériques de sortie et types de terminaux ».
POSIX2_FORT_DEV [FD] Le système prend en charge l'option Utilitaires de développement FORTRAN.
Le compilateur FORTRAN fort77 est le seul utilitaire de l'option Utilitaires de développement FORTRAN. Il est utilisé pour le développement d'applications en langage FORTRAN, y compris la compilation ou la traduction de code source FORTRAN.
L'utilitaire fort77 peut être fourni par un système conforme ; cependant, tout système se déclarant conforme à l'option Utilitaires de développement FORTRAN doit le fournir.
POSIX2_FORT_RUN [FR] Le système prend en charge l'option Utilitaires d'exécution FORTRAN.
L'utilitaire asa est le seul utilitaire de l'option Utilitaires d'exécution FORTRAN.
L'utilitaire asa peut être fourni par un système conforme ; cependant, tout système se déclarant conforme à l'option Utilitaires d'exécution FORTRAN doit le fournir.
POSIX2_LOCALEDEF Le système prend en charge l'option Utilitaires de création de paramètres régionaux.
Si cette option est prise en charge, le système prend en charge la création de paramètres régionaux comme décrit dans l'utilitaire localedef.
L'utilitaire localedef peut être fourni par un système conforme ; cependant, tout système prétendant être conforme à l'option Utilitaires de création de paramètres régionaux doit fournir l'utilitaire localedef.
POSIX2_PBS [OB BE] Le système prend en charge l'option Services et utilitaires d'environnement Batch (voir Services d'environnement Batch XCU).
Remarque : L'option Services et utilitaires d'environnement Batch est une combinaison de services et utilitaires Batch obligatoires et facultatifs. La constante symbolique POSIX_PBS implique que le système prend en charge tous les services et utilitaires Batch obligatoires.
POSIX2_PBS_ACCOUNTING Le système prend en charge l'option de comptabilité par lots.
POSIX2_PBS_CHECKPOINT Le système prend en charge l'option Point de contrôle/Redémarrage par lots.
POSIX2_PBS_LOCATE Le système prend en charge l'option Localiser la demande de travail par lots.
POSIX2_PBS_MESSAGE Le système prend en charge l'option de demande de message de travail par lots.
POSIX2_PBS_TRACK Le système prend en charge l'option Suivi des demandes de tâches par lots.
POSIX2_SW_DEV [SD] Le système prend en charge l'option Utilitaires de développement logiciel.
Les utilitaires de l'option Utilitaires de développement logiciel servent au développement d'applications, notamment à la compilation ou à la traduction de code source, à la création et à la maintenance d'archives de bibliothèques, ainsi qu'à la maintenance de groupes de programmes interdépendants.
Les utilitaires listés ci-dessous peuvent être fournis par le système conforme ; toutefois, tout système se déclarant conforme à l'option Utilitaires de développement logiciel doit fournir tous les utilitaires listés ici.
  • ar
  • make
  • nm
  • strip
POSIX2_UPE [UP] Le système prend en charge l'option Utilitaires de portabilité utilisateur.
Les utilitaires de l'option Utilitaires de portabilité utilisateur doivent être implémentés sur tous les systèmes se déclarant conformes à cette option, à l'exception de l'utilitaire vi, dont les fonctionnalités ne peuvent pas être implémentées sur tous les types de terminaux. Si l'option POSIX2_CHAR_TERM est prise en charge, le système doit prendre en charge toutes ces fonctionnalités sur au moins un type de terminal ; voir Périphériques de sortie et types de terminaux.
La liste des utilitaires de l'option Utilitaires de portabilité utilisateur est la suivante :
  • bg
  • ex
  • fc
  • fg
  • jobs
  • more
  • talk
  • vi
XOPEN_UNIX [XSI] Le système prend en charge l'option X/Open System Interfaces (XSI) (voir Conformité XSI).
XOPEN_UUCP [UU] Le système prend en charge l'option Utilitaires UUCP. La liste des utilitaires de l'option Utilitaires UUCP est la suivante :
  • uucp
  • uustat
  • uux

Conformité des applications

Conformément à POSIX.1-2017, les exigences de conformité des applications décrites dans cette section s'appliquent.

Toutes les applications revendiquant la conformité à POSIX.1-2017 doivent utiliser exclusivement les services dépendants du langage C décrits dans la section « Services dépendants du langage C », utiliser exclusivement les utilitaires et fonctionnalités définis dans le volume « Shell et Utilitaires » de POSIX.1-2017 et appartenir à l'une des catégories suivantes.

Application POSIX strictement conforme

Une application POSIX strictement conforme est une application qui requiert uniquement les fonctionnalités décrites dans POSIX.1-2017. Une telle application :

Dans POSIX.1-2017, toute restriction imposée à une application POSIX conforme doit restreindre une application POSIX strictement conforme.

Application POSIX conforme

Application POSIX conforme ISO/CEI

Une application POSIX conforme ISO/CEI utilise uniquement les fonctionnalités décrites dans POSIX.1-2017 et les liaisons de langage conformes approuvées pour toute norme ISO ou CEI. Une telle application doit inclure une déclaration de conformité documentant toutes les options et les dépendances de limites, ainsi que toutes les autres normes ISO ou CEI utilisées.

Application POSIX conforme <Organisme national>

Une application POSIX conforme <Organisme national> diffère d'une application POSIX conforme ISO/CEI en ce qu'elle peut également utiliser des normes spécifiques d'un seul organisme membre ISO/CEI, désigné ici par <Organisme national>. Une telle application doit inclure une déclaration de conformité documentant toutes les options et les dépendances de limites, ainsi que toutes les autres normes <Organisme national> utilisées.

Application POSIX conforme utilisant des extensions

Une application POSIX conforme utilisant des extensions diffère d'une application POSIX conforme uniquement par l'utilisation de fonctionnalités non standard, conformes à POSIX.1-2017. Une telle application doit documenter intégralement ses exigences relatives à ces fonctionnalités étendues, en plus de la documentation requise pour une application POSIX conforme. Une application POSIX conforme utilisant des extensions doit être soit une application POSIX conforme à la norme ISO/CEI utilisant des extensions, soit une application POSIX conforme à la norme <Organisme national> utilisant des extensions (voir Application POSIX conforme à la norme ISO/CEI et Application POSIX conforme à la norme <Organisme national>).

Application XSI strictement conforme

Une application XSI strictement conforme est une application nécessitant uniquement les fonctionnalités décrites dans POSIX.1-2017. Une telle application :

Dans POSIX.1-2017, toute restriction imposée à une application POSIX conforme doit restreindre une application XSI strictement conforme.

Application XSI conforme utilisant des extensions

Une application XSI conforme utilisant des extensions diffère d'une application XSI strictement conforme uniquement par l'utilisation de fonctionnalités non standard, conformes à POSIX.1-2017. Une telle application doit documenter intégralement ses exigences relatives à ces fonctionnalités étendues, en plus de la documentation requise pour une application XSI strictement conforme.

Services dépendants du langage pour le langage de programmation C

Les développeurs souhaitant revendiquer la conformité à la norme ISO C doivent revendiquer la conformité POSIX comme décrit dans la section Conformité POSIX.

Autres spécifications relatives aux langages

POSIX.1-2017 est actuellement spécifié en termes de langage de commande de l'interpréteur de commande et d'ISO C. Des liaisons avec d'autres langages de programmation sont en cours de développement.

Si la conformité à POSIX.1-2017 est revendiquée pour l'implémentation d'un langage de programmation, celui-ci doit prendre en charge l'utilisation de symboles externes distincts d'au moins 31 octets dans le texte source du programme. (C'est-à-dire que les identifiants qui diffèrent au moins jusqu'au trente et unième octet doivent être distincts.) Si une norme nationale ou internationale régissant un langage définit une longueur maximale inférieure à cette valeur, la longueur maximale définie par le langage doit être prise en charge. Les symboles externes qui ne diffèrent que par la casse doivent être distincts lorsque l'ensemble de caractères utilisé distingue les majuscules des minuscules et que le langage autorise (ou exige) que les majuscules et les minuscules soient distinctes dans les symboles externes.



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