Warum sind die meisten Linux-Distributionen nicht POSIX-kompatibel? Ich habe an vielen Stellen gelesen, dass sie es nicht sind (z. B.Größtenteils POSIX-kompatibel), aber es gibt keine wirkliche Erklärung dafür.
Gibt es etwas, was die C-Bibliothek und/oder Tools tun könnten, um dies zu umgehen (d. h. keine Änderungen am Kernel selbst)? Was muss getan werden?
Das vermeintliche Duplikat fragt, welche Linux-Distribution POSIX-kompatibel ist; hier wird gefragt, warum die meisten Linux-Distributionen nicht POSIX-kompatibel sind. Ich frage nach konkreten Details (d. h. eine Funktion oder ein Befehl ist nicht konform), nicht nach den Gründen, warum die konkreten Distributionen nicht zertifiziert werden (wollen).
Dieser Kommentar von @PhilipCouling (danke!) erklärt es gut:
Compliance und Zertifizierung sind unterschiedliche Themen. Die Antworten weisen auf die Kosten einer (erneuten) Zertifizierung hin, die für das Thema (Nicht-)Compliance irrelevant sind.
Antwort1
POSIX spezifiziert keine Kernelschnittstelle, daher ist Linux weitgehend irrelevant. Es spezifiziert die Systemschnittstelle, verschiedene Tools und Erweiterungen des C-Standards, die auf jedem Kernel vorhanden sein könnten. Es ist nicht POSIX-kompatibel in dem Sinne, dass es nicht erwähnt wird, oder es ist POSIX-kompatibel in dem Sinne, dass es nicht erwähnt wird, ganz nach Ihrer Wahl.
Es gibt UNIX®-zertifizierte Linux-Distributionen, daher ist es durchaus möglich, mit Linux vollständig POSIX-kompatible Betriebssysteme zu haben.Huaweis EulerOS ist einesdas hat und das Sie kaufen können, wenn Sie möchten. Die meisten anderen haben ihr Geld nicht bezahlt und haben daher keinen Zugang zumTestsuiteum die Konformität zu überprüfen.
Ob sie es in der Praxis erfüllen würden, ist nicht klar, aber manche geben sich mehr Mühe als andere. Ich vermute, dass einige der BSDs näher dran sind als die meisten Linux-Distributionen, aber das ist nur eine Vermutung: Ich weiß zum Beispiel, dass es execlp("cd", "/", NULL)
bei den meisten Linux-Distributionen fehlschlägt, aber bei vielen BSDs funktioniert und von POSIX gefordert wird.