為什麼大多數 Linux 發行版不符合 POSIX 標準?我在很多地方看到它們不是(例如大部分符合 POSIX 標準)但沒有真正的解釋來支持這一點。
C 函式庫和/或工具是否可以做一些事情來解決這個問題(即不對核心本身進行修改)?需要做什麼?
假定的重複是詢問哪個 Linux 發行版符合 POSIX 標準;這是在問為什麼大多數 Linux 發行版不相容於 POSIX。我要求提供具體細節(即某些功能或命令不相容),而不是特定發行版未(嘗試)獲得認證的原因。
@PhilipCouling 的評論(謝謝!)很好地解釋了這一點:
合規性和認證是不同的主題。答案指向(重新)認證的成本,這與(不)合規的主題無關。
答案1
POSIX 沒有指定核心接口,因此 Linux 基本上無關緊要。它確實指定了系統介面、各種工具以及 C 標準的擴展,這些可以存在於任何核心之上。它不符合 POSIX 標準,因為它沒有被提及,或者它符合 POSIX 標準,因為它沒有被提及,由您選擇。
有 UNIX® 認證的 Linux 發行版,因此使用 Linux 開發完全相容 POSIX 的作業系統當然是可能的。華為的EulerOS就是其中之一如果你願意的話,你可以購買。其餘的大多數人還沒有付款,因此無法使用測試套件檢查一致性。
他們在實踐中是否能滿足這一要求尚不清楚,但有些人確實比其他人更努力。我懷疑某些 BSD 比大多數 Linux 發行版更接近,但這是一個猜測:例如,我知道execlp("cd", "/", NULL)
在大多數 Linux 發行版上失敗,但可以在許多 BSD 上運行並且是 POSIX 所要求的。