Que signifie "POSIX"?

Qu'est-ce que POSIX? J'ai lu L'article de 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 svp m'expliquer en expliquant "la nécessité de "POSIX"?

711
demandé sur halfer 2009-11-23 03:42:49

13 réponses

POSIX est une famille de normes, spécifiées par le IEEE , pour clarifier et uniformiser les interfaces de programmation d'application (et les questions connexes, telles que les utilitaires shell en ligne de commande) fournies par les systèmes D'exploitation Unix-Y. Quand vous écrivez vos programmes pour vous appuyer sur les standards POSIX, vous pouvez être assez sûr de pouvoir les porter facilement dans une grande famille de dérivés Unix (y compris Linux, mais pas limité à cela!); si et quand vous utilisez une API Linux qui n'est pas standardisée en tant que partie de Posix, vous aurez un moment plus difficile si et quand vous voulez porter ce programme ou cette bibliothèque à d'autres systèmes Unix-y (par exemple, MacOSX) dans le futur.

489
répondu Alex Martelli 2009-11-23 01:52:19

les choses les plus importantes POSIX 7 définit

  1. C API

    très s'étend ANSI C avec des choses comme:

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

    ces IPA déterminent également les concepts de système sous-jacents sur lesquels ils dépendent, par exemple fork nécessite un concept d'un processus.

    de nombreux appels système Linux existent pour mettre en œuvre une fonction API POSIX c spécifique et rendre Linux Compatible, par exemple sys_write , sys_read ,...

    mise en œuvre majeure de Linux desktop: glibc, qui dans de nombreux cas ne fournit qu'un wrapper superficiel aux appels système.

  2. CLI utilities

    e. g.: cd , ls , echo , ...

    de nombreux utilitaires sont des extrémités frontales directes de l'interpréteur de commandes pour une fonction API C correspondante, par exemple mkdir .

    mise en œuvre majeure du bureau Linux: coreutils GNU pour les petits, projets GNU séparés pour les grands: sed , grep , awk , ... Certains utilitaires CLI sont mis en œuvre par Bash comme intégré .

  3. langage Shell

    E. G., a=b; echo "$a"

    Linux Majeures de bureau de mise en œuvre: GNU Bash.

  4. variables D'environnement

    e. g.: HOME , PATH .

  5. sortie du programme statut

    ANSI C dit 0 ou EXIT_SUCCESS pour le succès, EXIT_FAILURE pour l'échec, et laisse le reste de la mise en œuvre définie.

    POSIX ajoute:

  6. Expression régulière

    il y a deux types: BRE (Basic) et ERE (Extended). Basic est déprécié et réservé à pas de pause dans l'Api.

    ceux qui sont implémentés par les fonctions API C, et utilisés dans tous les utilitaires CLI, par exemple grep accepte BREs par défaut, et EREs avec -E .

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

    Linux Majeures de mise en œuvre: glibc implémente les fonctions de sous regex.h quels programmes comme grep peuvent utiliser comme backend.

  7. Annuaire struture

    e. g.: /dev/null , /tmp

    the Linux FHS increasedly extends POSIX.

  8. noms de fichiers

    • / est le séparateur de chemin
    • NUL ne peut pas être utilisé
    • . est cwd , .. parent
    • nom de fichier portable
      • utiliser au maximum 14 chars et 256 pour le chemin complet
      • ne peut contenir que: a-zA-Z0-9._-

    Voir aussi: qu'est-ce que la conformité posix pour le système de fichiers?

  9. utilitaire de ligne de Commande de l'API conventions

    non obligatoire, utilisé par POSIX, mais presque nulle part ailleurs, notamment pas dans GNU. Mais c'est vrai, il est trop restrictif, par exemple les drapeaux à une seule lettre seulement (par exemple -a ), pas de double trait d'Union versions longues (par exemple --all ).

    Un peu largement utilisé conventions:

    • - signifie stdin où un fichier est prévu
    • -- termine les drapeaux, p.ex. ls -- -l pour la liste a répertoire intitulé -l

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

qui se conforme à POSIX?

de nombreux systèmes suivent POSIX de près, mais peu sont en fait certifiés par L'Open Group qui maintient la norme.

  • OS X (Apple) X signifie à la fois 10 et UNIX. A été le premier système Apple POSIX, sorti vers 2001. Voir aussi: is OSX a POSIX OS?
  • AIX (IBM)
  • HP-UX (HP)
  • Solaris (Oracle)

la plupart des distros Linux sont très conformes, mais pas certifiés parce qu'ils ne veulent pas payer la vérification de conformité.

voir le wiki page .

Windows

Windows implémente POSIX sur certaines de ses distributions professionnelles.

étant donné qu'il s'agissait d'une option facultative, les programmeurs ne pouvaient s'en prévaloir pour la plupart des applications de l'utilisateur final.

Support a été déprécié dans Windows 8:

en 2016, une nouvelle API Linux officielle appelée" sous-système Windows Pour Linux " a été annoncée. Il comprend Linux appels système, fonctionnement ELF, parties du système de fichiers /proc , Bash, GCC, (TODO probably glibc?), apt-get et plus: https://channel9.msdn.com/Events/Build/2016/P488 donc je crois qu'il permettra à Windows de fonctionner beaucoup, si pas tous, de POSIX. Toutefois, il est axé sur les développeurs / le déploiement plutôt que sur les utilisateurs finaux. En particulier, il n'était pas prévu de permettre l'accès à L'interface graphique de Windows.

aperçu historique du Microsoft officiel Compatibilité 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 qui "fournit des fonctionnalités importantes de L'API POSIX"Pour Windows, mais exige que vous" reconstruire votre application à partir de la source si vous voulez qu'elle tourne sur Windows". MSYS2 est un projet connexe qui semble ajouter plus de fonctionnalités sur le sommet de Cygwin.

Android

Android a sa propre bibliothèque C (Bionic) qui ne prend pas entièrement en charge POSIX à partir de Android O: est Android POSIX-compatible?

niveau Bonus

le Linux Standard Base étend POSIX.

utilisez les index non-frames, ils sont beaucoup plus lisible et consultable: http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html

Obtenir une zippée version des pages HTML pour grepping: Est-il une liste de l'API POSIX / fonctions?

367

POSIX is:

POSIX "Interface Du Système D'Exploitation Portable [Unix]" 1 est le nom d'une famille des normes connexes spécifiées par le IEEE pour définir l'application l'interface de programmation (API), le long de avec des interfaces shell et utilitaires pour les logiciels compatibles avec les variantes le système d'exploitation Unix, bien que la norme peut s'appliquer à tout le système d'exploitation.

il s'agissait essentiellement d'un ensemble de mesures visant à alléger la douleur du développement et de l'utilisation des différentes saveurs D'UNIX en ayant une API et des utilitaires (la plupart du temps) communs. La conformité POSIX limitée s'étend également à diverses versions de Windows.

61
répondu cletus 2009-11-23 00:44:57

laissez-moi vous donner l'explication "officieuse".

POSIX est un ensemble de normes qui tente de distinguer les systèmes "UNIX" et les systèmes de type UNIX de ceux qui sont incompatibles avec eux. Il a été créé par le gouvernement des États-Unis à des fins d'approvisionnement. L'idée était que les marchés publics fédéraux des États-Unis avaient besoin d'un moyen légal de spécifier les exigences pour divers types de soumissions et de contrats d'une manière qui pourrait être utilisée pour exclure des systèmes auxquels un le personnel de base de codes ou de programmation existant ne serait pas portatif.

depuis que POSIX a été écrit post facto ... décrire un ensemble vaguement similaire de systèmes concurrents ... il n'a pas été rédigé de manière à pouvoir être mis en œuvre.

ainsi, par exemple, le NT de Microsoft a été écrit avec assez de conformité POSIX pour se qualifier pour certaines soumissions ... même si le sous-système POSIX était essentiellement inutile en termes de portabilité pratique et de compatibilité avec UNIX système.

diverses autres normes pour UNIX ont été écrites au cours des décennies. Des choses comme la SPEC1170 (spécifie onze cent soixante-dix appels de fonction qui devaient être implémentés de manière compatible) et diverses incarnations de la SUS (Spécification UNIX unique).

dans la plupart des cas, ces" normes " ne sont pas adaptées à une application technique pratique. Ils existent surtout pour l'argumentation, les querelles juridiques et d'autres raisons dysfonctionnelles.

38
répondu Jim Dennis 2011-08-09 04:02:41

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

puisque 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 pour ceux de l'industrie comme 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 une dans son application et s'attendre à ce qu'elle se comporte de la même façon dans la plupart des Unices.

cependant, les zones divergentes D'Unix sont généralement le point de mire, plutôt que les zones standard.

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

Le Groupe De La Base De Spécifications Numéro 7

numéro 7 est connu sous le nom de POSIX.1-2008 date, et il y a de nouvelles choses, cependant, Google-fu pour POSIX.1 et tels vous permettra de voir toute l'histoire derrière ce que Unix est.

28
répondu Jed Smith 2009-11-23 00:53:32

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

23
répondu Hank Gay 2009-11-23 00:44:41

en 1985, des individus provenant d'entreprises de toute l'industrie de l'informatique ensemble pour développer le POSIX (Portable Operating System) Interface pour les environnements informatiques), qui est basée en grande partie sur la définition D'Interface UNIX System V (SVID) et d'autres les efforts de normalisation. Ces efforts ont été encouragés par les États-Unis. gouvernement, qui avait besoin d'un environnement informatique standard pour réduire au minimum ses coûts de formation et d'approvisionnement. Publié dans 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 destiné aux systèmes de type UNIX, le les normes peuvent s'appliquer à tout système d'exploitation compatible. Maintenant que ces les normes ont gagné l'acceptation, les développeurs de logiciels sont en mesure de développer des applications qui fonctionnent sur toutes les versions conformes D'UNIX, Linux et d'autres systèmes d'exploitation.

du livre: un Guide pratique de Linux

4
répondu Koray Tugay 2015-04-27 19:14:43

cette norme fournit une base commune pour les systèmes D'exploitation de type Unix. Il spécifie comment le shell doit fonctionner, ce qu'il faut 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 pipes que les utilisateurs de la ligne de commande utilisent pour assembler des commandes sont spécifiées en détail ici, ce qui signifie que la fonction popen de C (pipe open) est POSIX-standard, pas ISO C-standard.

2
répondu Koray Tugay 2015-04-14 10:56:49

Posix est plus comme un OS, c'est un "OS standard". Vous pouvez l'imaginer comme un OS imaginaire, qui n'existe pas, mais il a une documentation. Ces documents sont le "standard posix", défini par L'IEEE, qui est la grande organisation standard des États-Unis. Les os mettant en œuvre cette spécification sont "conformes à Posix".

les réglementations gouvernementales préfèrent les solutions conformes à Posix dans leurs investissements, ce qui signifie que le fait d'être conforme à Posix a un impact financier important. avantage, en particulier pour les grandes entreprises informatiques des États-Unis.

la récompense pour un système D'exploitation entièrement conforme à posix, c'est la garantie qu'il compilera et exécutera toutes les applications conformes à Posix de manière transparente.

Linux est le plus connu. OSX, Solaris, NetBSD et Windows NT jouent ici aussi. Free-et OpenBSD ne sont que" presque " conformes à Posix. La conformité posix du WinNT n'est qu'une pseudo-solution pour éviter ce gouvernement le règlement ci-dessus.

2
répondu peterh 2018-09-17 02:08:08

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

par exemple, un programme qui tourne sur Linux peut aussi être compilé et exécuté sur D'autres systèmes de type UNIX comme Solaris, HP-UX, AIX, etc..

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

0
répondu sras 2015-10-13 12:12:05

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 . Ainsi, lorsque les développeurs écrivent un programme sous un système conforme à Posix tel que Linux par exemple, il est généralement, et pas toujours, garanti de fonctionner sur un autre système conforme à posix tel que le système AIX D'IBM ou d'autres variantes commerciales D'Unix. Posix est une bonne chose d'avoir en tant que tel il facilite le développement du logiciel pour une portabilité maximale qu'il vise. Espérons que cette réponse est logique.

merci à Jed Smith & Tinkertim d'avoir souligné mon erreur - ma faute!!! : (

0
répondu t0mm13b 2016-04-07 18:18:58

Un cahier des charges (plan) sur la façon de faire un OS compatible avec la fin du système d'exploitation UNIX (que Dieu le bénisse!). C'est pourquoi macOS et GNU/Linux ont des lignes de commande de terminaux, des interfaces graphiques, des bibliothèques, etc. très similaires. Parce qu'ils ont tous les deux été conçus selon le modèle POSIX.

POSIX ne dit pas aux ingénieurs et programmeurs comment coder mais ce qu'il faut coder.

0
répondu MCH 2018-05-25 09:25:04

quelques faits sur POSIX qui ne sont pas si brillants.

POSIX est également l'interface d'appel de système ou API, et il a près de 30 ans.

il a été conçu pour accès aux données en série au stockage local , en utilisant des ordinateurs simples Avec CPU simple.

la sécurité N'était pas une préoccupation majeure dans POSIX by design, conduisant à de nombreuses attaques de l'état de course au fil des ans et forçant les programmeurs à contourner ces limites.

des bogues graves sont encore découverts, des bogues qui auraient pu être évités avec une conception plus sécurisée de L'API POSIX.

POSIX s'attend à ce que les utilisateurs émettent un appel synchrone à la fois et attendent ses résultats avant d'émettre le suivant. Les programmeurs d'aujourd'hui s'attendent à émettre de nombreuses demandes asynchrones à la fois pour améliorer le débit global.

cette API synchrone est particulièrement mauvais pour accéder aux objets distants et cloud, où la latence élevée compte.

0
répondu prosti 2018-09-27 10:05:56