为什么大多数 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 所要求的。