Question Je n'ai jamais vraiment compris: qu'est-ce que POSIX?


Qu'est-ce que POSIX? J'ai lu le Article Wikipedia et je le lis chaque fois que je rencontre le terme. Le fait est que je n'ai jamais vraiment compris ce que c'est.

Quelqu'un peut-il me l'expliquer en expliquant "le besoin de POSIX" aussi?


685
2017-11-23 00:42


origine


Réponses:


POSIX est une famille de normes, spécifiée par le IEEE, pour clarifier et uniformiser les interfaces de programmation d'application (et les problèmes annexes, tels que les utilitaires shell de ligne de commande) fournis par les systèmes d'exploitation Unix-y. Quand vous écrivez vos programmes en vous basant sur les standards POSIX, vous pouvez être sûr de pouvoir les porter facilement parmi une grande famille de dérivés Unix (y compris Linux, mais sans s'y limiter!); Si et quand vous utilisez une API Linux qui n'est pas standardisée dans le cadre de Posix, vous aurez plus de difficulté si et quand vous voulez porter ce programme ou cette bibliothèque vers d'autres systèmes Unix-y (par exemple, MacOSX) dans le futur.


467
2017-11-23 00:47



Les choses les plus importantes POSIX 7 définit

  1. API C

    Très étend ANSI C avec des choses comme:

    • plus d'opérations sur les fichiers: mkdir, dirname, symlink, readlink, link (liens durs), poll, sync
    • processus et threads: fork, execl, pipe, sémaphores sem_*, la memoire partagée (shm_*), kill, paramètres de planification (nice, sched_), sleep
    • la mise en réseau
    • expressions régulières
    • gestion avancée de la mémoire: mmap, mlock, mprotect, madvise

    Ces API déterminent également les concepts de système sous-jacents dont ils dépendent, par ex. fork nécessite un concept de processus.

    De nombreux appels système Linux existent pour implémenter une fonction API POSIX C spécifique et rendre Linux compatible, par ex. sys_write, sys_read, ...

    Implémentation de bureau Linux majeur: glibc, qui dans de nombreux cas fournit juste un wrapper peu profond aux appels système.

  2. Utilitaires CLI

    Par exemple.: cd, ls, echo, ...

    De nombreux utilitaires sont des frontaux shell directs pour une fonction API C correspondante, par ex. mkdir.

    Implémentation des principaux bureaux Linux: GNU Coreutils pour les petits, séparer les projets GNU pour les grands: sed, grep, awk, ... Certains utilitaires CLI sont implémentés par Bash comme built-ins.

  3. Langage shell

    Par exemple., a=b; echo "$a"

    Implémentation de bureau Linux majeur: GNU Bash.

  4. Variables d'environnement

    Par exemple.: HOME, PATH.

  5. Statut de sortie du programme

    ANSI C dit 0 ou EXIT_SUCCESS pour le succes, EXIT_FAILURE pour l'échec, et laisse l'implémentation restante définie.

    POSIX ajoute:

  6. Expression régulière

    Il existe deux types: BRE (Basic) et ERE (Extended). Basic est déprécié et conservé uniquement pour ne pas casser les API.

    Celles-ci sont implémentées par les fonctions de l'API C et utilisées dans les utilitaires CLI, par ex. grep accepte les BRE par défaut, et les ERE avec -E.

    Par exemple.: echo 'a.1' | grep -E 'a.[[:digit:]]'

    Implémentation majeure de Linux: glibc implémente les fonctions sous regex.h quels programmes comme grep peut utiliser comme backend.

  7. Struture d'annuaire

    Par exemple.: /dev/null, /tmp

    Le Linux FHS étend considérablement POSIX.

  8. Noms de fichiers

    • / est le séparateur de chemin
    • NUL Ne peut pas être utilisé
    • . est cwd, .. parent
    • noms de fichiers portables
      • utiliser au maximum 14 caractères et 256 pour le chemin complet
      • ne peut contenir que: a-zA-Z0-9._-

    Voir également: Quelle est la conformité de Posix pour le système de fichiers?

  9. Conventions d'API de l'utilitaire de ligne de commande

    Non obligatoire, utilisé par POSIX, mais presque nulle part ailleurs, notamment pas dans GNU. Mais vrai, c'est trop restrictif, par ex. des drapeaux à lettre unique seulement (par ex. -a), pas de version longue de double trait d'union (par ex. --all).

    Quelques conventions largement utilisées:

    • - signifie stdin où un fichier est attendu
    • -- termine les drapeaux, par ex. ls -- -l pour lister un répertoire nommé -l 

    Voir également: Existe-t-il des normes pour les commutateurs et arguments de ligne de commande Linux?

Qui est conforme à POSIX?

Beaucoup de systèmes suivent de près POSIX, mais peu sont certifiés par le groupe ouvert qui maintient la norme. Les certifiés notables incluent:

La plupart des distributions Linux sont très conformes, mais pas certifiées car elles ne veulent pas payer la vérification de conformité.

Voir le page wiki.

les fenêtres

Windows a implémenté POSIX sur certaines de ses distributions professionnelles.

Comme c'était une fonctionnalité optionnelle, les programmeurs ne pouvaient pas compter dessus pour la plupart des applications utilisateur.

Le support a été déprécié dans Windows 8:

En 2016, une nouvelle API officielle de type Linux appelée "Windows Subsystem for Linux" a été annoncée. Il comprend les appels système Linux, ELF en cours d'exécution, des parties de la /proc système de fichiers, Bash, GCC, (TODO probable glibc?), apt-get et plus: https://channel9.msdn.com/Events/Build/2016/P488 donc je crois que cela va permettre à Windows de fonctionner beaucoup, sinon tous, de POSIX. Cependant, il est axé sur les développeurs / déploiement au lieu des utilisateurs finaux. En particulier, il n'était pas prévu d'autoriser l'accès à l'interface graphique de Windows.

Présentation historique de la compatibilité officielle de Microsoft POSIX: http://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-posix-subsystem/

Cygwin est un projet tiers bien connu de la GPL pour qui "fournit une fonctionnalité API POSIX substantielle" pour Windows, mais nécessite que vous "reconstruisiez votre application à partir de la source si vous voulez qu'elle fonctionne sur Windows". MSYS2 est un projet connexe qui semble ajouter plus de fonctionnalités sur Cygwin.

Android

Android a sa propre bibliothèque C (Bionic) qui ne supporte pas complètement POSIX à partir d'Android O: Est-ce que Android POSIX est compatible?

Niveau bonus

le Linux Standard Base étend plus loin POSIX.

Utilisez les index non-cadres, ils sont beaucoup plus lisibles et consultables: http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html

Obtenez une version zippée complète des pages HTML pour le grepping: Y a-t-il une liste des API / fonctions POSIX?


346
2017-08-06 21:03



POSIX est:

POSIX (prononcé / pɒzɪks /) ou   "Interface du système d'exploitation portable   [pour Unix] "1 est le nom d'une famille   des normes connexes spécifiées par   IEEE pour définir l'application   interface de programmation (API), le long   avec des interfaces shell et utilitaires   pour un logiciel compatible avec des variantes   du système d'exploitation Unix, bien que   la norme peut s'appliquer à tout   système opérateur.

Fondamentalement, c'était un ensemble de mesures pour soulager la douleur du développement et de l'utilisation des différentes saveurs d'UNIX en ayant une API et des utilitaires (pour la plupart) communs. La conformité POSIX limitée a également été étendue à différentes versions de Windows.


60
2017-11-23 00:44



Laissez-moi donner l'explication "officieuse".

POSIX est un ensemble de normes qui tente de distinguer les systèmes «UNIX» et UNIX de ceux qui leur sont incompatibles. Il a été créé par le gouvernement américain à des fins d'approvisionnement. L 'idée était que les marchés publics américains avaient besoin d' un moyen de spécifier légalement les exigences pour divers types d 'offres et de contrats afin d' exclure les systèmes auxquels une base de code ou un personnel de programmation existant ne serait PAS transférable.

Depuis POSIX a été écrit post facto ... pour décrire un ensemble de systèmes concurrents vaguement similaires ... il n'a pas été écrit d'une manière qui pourrait être mise en œuvre.

Ainsi, par exemple, le NT de Microsoft a été écrit avec suffisamment de conformité POSIX pour être admissible à certaines offres ... même si le sous-système POSIX était essentiellement inutile en termes de portabilité pratique et de compatibilité avec les systèmes UNIX.

Diverses autres normes pour UNIX ont été écrites au cours des décennies. Des choses comme le SPEC1170 (spécifié onze cent soixante-dix appels de fonction qui devaient être mis en œuvre de manière compatible) et diverses incarnations du SUS (Single UNIX Specification).

Pour la plupart, ces "normes" ont été inadéquates pour toute application technique pratique. Ils existent le plus pour l'argumentation, la querelle juridique et d'autres raisons dysfonctionnelles.


37
2017-11-23 02:55



POSIX est un ensemble de normes mises en avant par IEEE et The Open Group qui décrit comment fonctionnerait un Unix idéal. Les programmeurs, les utilisateurs et les administrateurs peuvent tous se familiariser avec le document POSIX et s'attendre à ce que Unix, qui se plaint de POSIX, fournisse toutes les fonctionnalités standard mentionnées.

Comme chaque Unix fait les choses un peu différemment - Solaris, Mac OS X, IRIX, BSD et Linux ont tous leurs bizarreries - POSIX est particulièrement utile à ceux de l'industrie car il définit un environnement standard pour fonctionner. Par exemple, la plupart des fonctions de la bibliothèque C sont basées sur POSIX; un programmeur peut donc en utiliser un dans son application et s'attendre à ce qu'il se comporte de la même manière sur la plupart des Unices.

Cependant, les zones divergentes d'Unix sont généralement le focus, plutôt que les standards.

La bonne chose à propos de POSIX est que vous êtes invités à le lire vous-même:

Les spécifications de base de groupe ouvert, numéro 7

Le numéro 7 est connu sous le nom de POSIX.1-2008, et il y a de nouvelles choses là-dedans - cependant, Google-fu pour POSIX.1 vous permettra de voir toute l'histoire de ce qu'est Unix.


28
2017-11-23 00:46



POSIX est une norme pour les systèmes d'exploitation censée faciliter l'écriture de logiciels multiplateformes. C'est une affaire particulièrement importante dans le monde d'Unix.


23
2017-11-23 00:44



En 1985, des individus issus d'entreprises de l'industrie informatique   réunis pour développer POSIX (Portable Operating System   Interface pour les environnements informatiques), qui repose en grande partie   sur la définition d'interface du système V UNIX (SVID) et d'autres   efforts de normalisation. Ces efforts ont été stimulés par les États-Unis.   gouvernement, qui avait besoin d'un environnement informatique standard pour minimiser   ses coûts de formation et d'approvisionnement. Sorti en 1988, POSIX est un groupe   des normes IEEE qui définissent les interfaces API, shell et utilitaire   pour un système d'exploitation. Bien que visant des systèmes de type UNIX, le   les normes peuvent s'appliquer à tout système d'exploitation compatible. Maintenant que ces   les normes ont été acceptées, les développeurs de logiciels   développer des applications qui s'exécutent sur toutes les versions conformes d'UNIX,   Linux, et d'autres systèmes d'exploitation.

Extrait du livre: Un guide pratique sur Linux


3
2018-04-27 19:14



Cette norme fournit une base commune pour les systèmes d'exploitation de type Unix. Il spécifie comment le shell devrait fonctionner, à quoi s'attendre des commandes comme ls et grep, et un certain nombre de bibliothèques C que les auteurs C peuvent s'attendre à avoir disponibles.

Par exemple, les tuyaux que les utilisateurs de la ligne de commande utilisent pour enchaîner les commandes sont spécifiés en détail ici, ce qui signifie que la fonction popen (pipe open) de C est POSIX, pas ISO C-standard.


2
2018-04-14 10:56



Posix est plus un système d'exploitation, c'est un "OS standard". Vous pouvez l'imaginer comme un système d'exploitation imaginaire, qui n'existe pas réellement mais qui a une documentation. Ces papiers sont le «standard posix», défini par l'IEEE, qui est la grande organisation standard des USA. Les systèmes d'exploitation implémentant cette spécification sont "compatibles Posix".

Les réglementations gouvernementales préfèrent les solutions conformes à Posix dans leurs investissements, ce qui signifie que Posix-conforme a un avantage financier significatif, en particulier pour les grandes entreprises informatiques des États-Unis.

La récompense pour un système d'exploitation entièrement compatible avec Posix, c'est la garantie qu'il compilera et exécutera de façon transparente toutes les applications compatibles Posix.

Linux est le plus connu. OSX, Solaris, NetBSD et Windows NT jouent ici aussi. Free- et OpenBSD sont seulement "presque" compatibles Posix. La posix-conformité du WinNT n'est qu'une pseudo-solution pour éviter cette réglementation gouvernementale ci-dessus.


1
2018-02-10 12:55



POSIX définit un ensemble de normes pour un système d'exploitation ou un programme. L'objectif est d'écrire un nouveau logiciel compatible avec les systèmes de type UNIX.

Par exemple, un programme fonctionnant sous Linux peut également être compilé et exécuté sur d'autres systèmes de type UNIX tels que Solaris, HP-UX et AIX, etc.

Les exemples les plus populaires sont GNU Bash qui est 100% conformité POSIX et gawk utilitaire.


0
2017-10-13 12:12



Posix régit l'interopérabilité, la portabilité, et dans d'autres domaines tels que l'utilisation et le mécanisme de fork, les permissions et les standards du système de fichiers tels que / etc, / var, / usr et ainsi de suite . Par conséquent, lorsque les développeurs écrivent un programme sous un système compatible Posix tel que par exemple Linux, il est généralement, pas toujours garanti de fonctionner sur un autre système compatible Posix tel que le système AIX d'IBM ou d'autres variantes commerciales d'Unix. Posix est une bonne chose à avoir en tant que telle, il facilite le développement du logiciel pour une portabilité maximale pour laquelle il aspire. J'espère que cette réponse a du sens.

Merci à Jed Smith et Tinkertim pour avoir signalé mon erreur - ma mauvaise !!! :(


0
2017-11-23 00:50