it-swarm.com.de

Was bedeutet "POSIX"?

Was ist POSIX? Ich habe den Wikipedia-Artikel gelesen und ich lese ihn jedes Mal, wenn ich auf den Begriff stoße. Tatsache ist, dass ich nie wirklich verstanden habe, was es ist.

Kann mir das bitte jemand erklären, indem er auch "die Notwendigkeit für POSIX" erklärt?

751
claws

POSIX ist eine Familie von Standards, die von IEEE festgelegt wird, um die Anwendungsprogrammierschnittstellen (und Hilfsprobleme, wie Befehlszeilen-Shell-Dienstprogramme), die von Unix-y bereitgestellt werden, zu klären und zu vereinheitlichen Systeme. Wenn Sie Ihre Programme so schreiben, dass sie sich auf POSIX-Standards verlassen, können Sie ziemlich sicher sein, sie problemlos unter einer großen Familie von Unix-Derivaten (einschließlich Linux, aber nicht darauf beschränkt!) Portieren zu können. Wenn Sie eine Linux-API verwenden, die nicht als Teil von Posix standardisiert ist, wird es schwieriger, wenn Sie dieses Programm oder diese Bibliothek in der Zukunft auf andere Unix-y-Systeme (z. B. MacOSX) portieren möchten.

519
Alex Martelli

Wichtigste Dinge POSIX 7 definiert

  1. C-API

    Großartig erweitert ANSI C mit Dingen wie:

    • weitere Dateioperationen: mkdir, dirname, symlink, readlink, link (Hardlinks), poll() , stat, sync, nftw()
    • prozess und Threads: fork, execl, pipe, Semaphern sem_* , Shared Memory (shm_*), kill, Planungsparameter (Nice, sched_*), sleep, mkfifo, setpgid()
    • vernetzung: socket()
    • speicherverwaltung: mmap, mlock, mprotect, madvise, brk()
    • dienstprogramme: reguläre Ausdrücke (reg*)

    Diese APIs bestimmen auch die zugrunde liegenden Systemkonzepte, von denen sie abhängen, z. fork erfordert ein Konzept eines Prozesses.

    Viele Linux-Systemaufrufe sind vorhanden, um eine bestimmte POSIX C-API-Funktion zu implementieren und Linux-kompatibel zu machen, z. sys_write, sys_read, ... Viele dieser Systemaufrufe haben jedoch auch Linux-spezifische Erweiterungen.

    Wichtige Linux-Desktop-Implementierung: glibc, die in vielen Fällen nur einen flachen Wrapper für Systemaufrufe bereitstellt.

  2. CLI-Dienstprogramme

    Beispiel: cd, ls, echo, ...

    Viele Dienstprogramme sind direkte Shell-Frontends für eine entsprechende C-API-Funktion, z. mkdir.

    Wichtige Linux-Desktop-Implementierung: GNU Coreutils für die Kleinen, separate GNU -Projekte für die Großen: sed, grep, awk, ... Einige CLI-Dienstprogramme werden von Bash wie ins .

  3. Shell-Sprache

    Zum Beispiel a=b; echo "$a"

    Wichtige Linux-Desktop-Implementierung: GNU Bash .

  4. Umgebungsvariablen

    Beispiel: HOME, PATH.

  5. Programmende-Status

    ANSI C sagt 0 oder EXIT_SUCCESS für Erfolg, EXIT_FAILURE für Fehler und lässt die restliche Implementierung definiert.

    POSIX fügt hinzu:

  6. Regulären Ausdruck

    Es gibt zwei Typen: BRE (Basic) und ERE (Extended). Basic ist veraltet und wird nur beibehalten, um APIs nicht zu brechen.

    Diese werden von C-API-Funktionen implementiert und in allen CLI-Dienstprogrammen verwendet, z. grep akzeptiert standardmäßig BREs und EREs mit -E.

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

    Wichtige Linux-Implementierung: glibc implementiert die Funktionen unter regex.h , die von Programmen wie grep als Backend verwendet werden können.

  7. Verzeichnisübersicht

    Beispiel: /dev/null, /tmp

    Das Linux FHS erweitert POSIX erheblich.

  8. Dateinamen

    • / ist das Pfadtrennzeichen
    • NUL kann nicht verwendet werden
    • . ist cwd, .. übergeordnet
    • tragbare Dateinamen
      • verwenden Sie höchstens 14 Zeichen und 256 für den vollständigen Pfad
      • kann nur enthalten: a-zA-Z0-9._-

    Siehe auch: Was ist die Posix-Kompatibilität für das Dateisystem?

  9. API-Konventionen für das Befehlszeilendienstprogramm

    Nicht obligatorisch, wird von POSIX verwendet, aber fast nirgendwo sonst, insbesondere nicht in GNU. Aber es ist zu restriktiv, z. nur Ein-Buchstaben-Flags (z. B. -a), keine Versionen mit doppeltem Bindestrich (z. B. --all).

    Einige weit verbreitete Konventionen:

    • - bedeutet stdin, wo eine Datei erwartet wird
    • -- beendet Flags, z.B. ls -- -l, um ein Verzeichnis mit dem Namen -l aufzulisten 

    Siehe auch: Gibt es Standards für Linux-Befehlszeilenschalter und -argumente?

Wer passt sich an POSIX an?

Viele Systeme folgen POSIX genau, aber nur wenige sind tatsächlich von der Open Group zertifiziert, die den Standard beibehält. Bemerkenswerte zertifizierte sind:

  • OS X (Apple) X steht sowohl für 10 als auch für UNIX. War das erste Apple POSIX-System, das um 2001 veröffentlicht wurde. Siehe auch: Ist OSX ein POSIX-Betriebssystem?
  • AIX (IBM)
  • HP-UX (HP)
  • Solaris (Oracle)

Die meisten Linux-Distributionen sind sehr kompatibel, aber nicht zertifiziert, weil sie die Konformitätsprüfung nicht bezahlen möchten. Inspurs K-UX und Huawei EulerOS sind zwei zertifizierte Beispiele.

Die offizielle Liste der zertifizierten Systeme finden Sie unter: https://www.opengroup.org/openbrand/register/ und auch auf der Wiki-Seite .Windows.

Windows implementierte POSIX in einigen seiner professionellen Distributionen.

Da es sich um eine optionale Funktion handelte, konnten sich Programmierer für die meisten Endbenutzeranwendungen nicht darauf verlassen. 

Die Unterstützung wurde in Windows 8 nicht mehr unterstützt: 

Historischer Überblick über die offizielle Kompatibilität mit Microsoft POSIX: http://brianreiter.org/2010/08/24/the-sad-history-of-the-Microsoft-posix-subsystem/

Cygwin ist ein bekanntes GPL-Drittanbieterprojekt, das für Windows "umfangreiche POSIX-API-Funktionen bereitstellt", aber "Sie müssen Ihre Anwendung aus dem Quellcode neu erstellen, wenn sie unter Windows ausgeführt werden soll". MSYS2 ist ein verwandtes Projekt, das offenbar mehr Funktionalität zu Cygwin hinzufügt.

Android.

Android hat eine eigene C-Bibliothek (Bionic), die POSIX ab Android O nicht vollständig unterstützt: Ist Android POSIX-kompatibel?

Bonuslevel

Die Linux Standard Base erweitert POSIX weiter.

Verwenden Sie die Nicht-Frame-Indizes. Sie sind viel lesbarer und durchsuchbarer: http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html .

Laden Sie eine vollständige, gezippte Version der HTML-Seiten für das Grepping herunter: Wo ist die Liste der POSIX C-API-Funktionen?

Get a full zipped version of the HTML pages for grepping: Where is the list of the POSIX C API functions?

POSIX ist:

POSIX (ausgesprochen/ˈpɒzɪks /) oder "Portable Operating System Interface [Für Unix]" 1 ist der Name einer Familie von verwandten Standards, die von der .__ spezifiziert werden. IEEE zur Definition der Anwendung Programmierschnittstelle (API), zusammen mit mit Shell- und Dienstprogrammschnittstellen für Software, die mit Varianten kompatibel ist des Unix-Betriebssystems, obwohl Der Standard kann für alle .__ gelten. Betriebssystem.

Im Wesentlichen handelt es sich dabei um eine Reihe von Maßnahmen, um die Entwicklung und Verwendung verschiedener UNIX-Varianten durch die Verwendung einer (meist) gemeinsamen API und Dienstprogramme zu erleichtern. Die eingeschränkte POSIX-Konformität wurde auch auf verschiedene Windows-Versionen erweitert.

65
cletus

Lassen Sie mich die churlish "inoffizielle" Erklärung geben.

POSIX ist ein Satz von Standards, der versucht, "UNIX" - und UNIX-ähnliche Systeme von denjenigen zu unterscheiden, die mit ihnen nicht kompatibel sind. Es wurde von der US-Regierung für Beschaffungszwecke geschaffen. Die Idee war, dass für die Beschaffung in den Vereinigten Staaten ein Weg erforderlich war, die Anforderungen für verschiedene Arten von Angeboten und Verträgen gesetzlich festzulegen, um Systeme auszuschließen, auf die eine bestimmte vorhandene Codebasis oder Programmierer NICHT portierbar wären.

Da POSIX post facto geschrieben wurde, um eine lose ähnliche Gruppe konkurrierender Systeme zu beschreiben, wurde es NICHT in einer Weise geschrieben, die implementiert werden konnte.

So wurde zum Beispiel Microsofts NT mit ausreichend POSIX-Konformität geschrieben, um sich für einige Gebote zu qualifizieren ... obwohl das POSIX-Subsystem im Hinblick auf die praktische Portabilität und Kompatibilität mit UNIX-Systemen im Wesentlichen unbrauchbar war.

Im Laufe der Jahrzehnte wurden verschiedene andere Standards für UNIX geschrieben. Dinge wie der SPEC1170 (spezifiziert elfhundertundsiebzig Funktionsaufrufe, die kompatibel implementiert werden mussten) und verschiedene Inkarnationen der SUS (Single UNIX-Spezifikation).

Zum größten Teil waren diese "Standards" für jede praktische technische Anwendung unzureichend. Sie bestehen meist aus Argumenten, gerichtlichem Streit und anderen dysfunktionalen Gründen.

40
Jim Dennis

POSIX ist eine Reihe von Standards, die von IEEE und The Open Group aufgestellt wurden und die beschreiben, wie ein ideales Unix funktionieren würde. Programmierer, Benutzer und Administratoren können sich mit dem POSIX-Dokument vertraut machen und erwarten, dass eine POSIX-Beschwerde von Unix alle genannten Standardeinrichtungen bereitstellt.

Da jeder Unix etwas anders vorgeht - Solaris, Mac OS X, IRIX, BSD und Linux haben alle ihre Eigenheiten - POSIX ist besonders für Branchenkenner von Nutzen, da sie eine Standardumgebung definiert, in der sie arbeiten. Die meisten Funktionen in der C-Bibliothek basieren auf POSIX. Ein Programmierer kann daher eine in seiner Anwendung verwenden und erwartet, dass er sich in den meisten Unices gleich verhält.

Allerdings sind die divergenten Bereiche von Unix eher der Fokus als die Standardbereiche.

Das Tolle an POSIX ist, dass Sie es gerne selbst lesen können:

The Open Group Base-Spezifikationen Ausgabe 7

Ausgabe 7 ist als POSIX.1-2008 bekannt, und es gibt Neues darin - Google-fu für POSIX.1 und so können Sie die gesamte Historie hinter Unix sehen.

28
Jed Smith

POSIX ist ein Standard für Betriebssysteme, der das Schreiben von plattformübergreifender Software erleichtern sollte. Es ist eine besonders große Sache in der Welt von Unix.

27
Hank Gay

Im Jahr 1985 wurden Einzelpersonen aus Unternehmen der gesamten Computerbranche zusammen, um den POSIX-Standard (Portable Operating System Schnittstelle für Computerumgebungen) zu entwickeln, der weitgehend auf .__ basiert. unter UNIX System V Interface Definition (SVID) und anderen früheren Standardisierungsbemühungen. Diese Bemühungen wurden von den USA ..__ vorangetrieben. Regierung, die eine Standard-Computerumgebung zur Minimierung von seine Schulungs- und Beschaffungskosten. POSIX wurde 1988 veröffentlicht und ist eine Gruppe von IEEE-Standards, die die API-, Shell- und Utility-Schnittstellen definieren für ein Betriebssystem. Obwohl es sich um UNIX-ähnliche Systeme handelt, ist der Standards können für jedes kompatible Betriebssystem gelten. Nun, dass diese Standards haben sich durchgesetzt, Softwareentwickler können Anwendungen entwickeln, die auf allen konformen UNIX-Versionen ausgeführt werden, Linux und andere Betriebssysteme.

Aus dem Buch: Ein praktischer Leitfaden für Linux

5
Koray Tugay

Posix ist mehr als ein OS, es ist ein "OS-Standard". Sie können es sich als ein imaginäres Betriebssystem vorstellen, das eigentlich nicht existiert, aber es hat eine Dokumentation. Diese Papiere sind der "Posix-Standard", definiert von der IEEE, der großen Standardorganisation der USA. Die Betriebssysteme, die diese Spezifikation implementieren, sind "Posix-kompatibel".

Staatliche Vorschriften bevorzugen Posix-konforme Lösungen bei ihren Investitionen, sodass Posix-Konformität insbesondere für die großen IT-Unternehmen der USA einen erheblichen finanziellen Vorteil bietet.

Die Belohnung für ein vollständig posix-kompatibles Betriebssystem ist die Garantie, dass es alle Posix-kompatiblen Anwendungen nahtlos kompiliert und ausführt.

Linux ist das bekannteste. Hier spielen auch OSX, Solaris, NetBSD und Windows NT. Free- und OpenBSD sind nur "fast" Posix-kompatibel. Die Posix-Compliance des WinNT ist nur eine Pseudo-Lösung, um die oben genannten staatlichen Bestimmungen zu vermeiden.

2
peterh

Dieser Standard bietet eine gemeinsame Basis für Unix-ähnliche Betriebssysteme. Es gibt an, wie die Shell funktionieren soll, was von Befehlen wie ls und grep zu erwarten ist, und eine Reihe von C-Bibliotheken, die C-Autoren zur Verfügung stellen können.

Beispielsweise werden die Pipes, die Befehlszeilenbenutzer zum Aneinanderreihen von Befehlen verwenden, hier detailliert angegeben. Dies bedeutet, dass die Popen-Funktion (Pipe Open) von C der POSIX-Standard und nicht der ISO-C-Standard ist.

2
Koray Tugay

POSIX definiert einen Standardsatz für ein Betriebssystem oder ein Programm. Das Ziel ist, neue Software zu schreiben, die mit UNIX-ähnlichen Systemen kompatibel ist.

Ein Programm, das unter Linux ausgeführt wird, kann beispielsweise auch auf anderen UNIX-ähnlichen Systemen wie Solaris, HP-UX und AIX usw. kompiliert und ausgeführt werden.

Die bekanntesten Beispiele sind GNU Bash (100% ige POSIX-Konformität) und gawk.

0
sras

Eine Spezifikation (Blaupause) darüber, wie ein Betriebssystem mit spätem UNIX-Betriebssystem kompatibel gemacht werden kann (möge Gott ihn segnen!). Aus diesem Grund verfügen macOS und GNU/Linux über sehr ähnliche Terminal-Befehlszeilen, GUIs, Bibliotheken usw., da beide gemäß POSIX-Blueprint entworfen wurden.

POSIX teilt Ingenieuren und Programmierern nicht mit, was sie schreiben sollen, sondern was sie schreiben sollen.

0
MCH

Posix regelt Interoperabilität, Portabilität und in anderen Bereichen, wie z. B. der Verwendung und dem Mechanismus von Gabelungsberechtigungen und Dateisystemstandards wie/etc,/var,/usr und so weiter . Wenn Entwickler ein Programm unter einem Posix-kompatiblen System wie z. B. Linux schreiben, ist es daher nicht immer garantiert, dass sie auf einem anderen Posix-kompatiblen System wie dem AIX-System von IBM oder anderen kommerziellen Varianten von Unix ausgeführt werden. Posix ist eine gute Sache, da es die Softwareentwicklung erleichtert, um die maximale Portabilität zu erreichen, die es anstrebt. Hoffe, diese Antwort macht Sinn. 

Danke an Jed Smith & Tinkertim für den Hinweis auf meinen Fehler - mein schlechter !!! :(

0
t0mm13b

POSIX steht für Portable Operating System Interface und ist ein IEEE-Standard, der die Portabilität von Anwendungen erleichtern soll. POSIX ist ein Versuch eines Konsortiums von Anbietern, eine einzige Standardversion von UNIX zu erstellen.

0

Einige Fakten zu POSIX, die nicht so hell sind. 

POSIX ist auch die Schnittstelle oder API des Systemaufrufs und ist fast 30 Jahre alt.  

Es wurde für den serialisierten Datenzugriff auf den lokalen Speicher mit Einzelcomputern mit Einzel-CPUs entwickelt.

Die Sicherheit war in POSIX nicht das Hauptanliegen, was im Laufe der Jahre zu zahlreichen Angriffen auf die Rennbedingungen führte und Programmierer zwang, diese Einschränkungen zu umgehen. 

Es werden immer noch ernsthafte Fehler entdeckt, die durch ein sichereres POSIX-API-Design hätte vermieden werden können. 

POSIX erwartet, dass die Benutzer jeweils einen synchronen Aufruf absetzen und auf die Ergebnisse warten, bevor sie den nächsten ausgeben. Heutige Programmierer erwarten viele asynchrone Anforderungen gleichzeitig, um den Gesamtdurchsatz zu verbessern. 

Diese synchrone API ist besonders für den Zugriff auf Remote- und Cloud-Objekte ungeeignet, wenn hohe Latenzzeiten von Bedeutung sind.

0
prosti