为什么大多数 Linux 发行版不符合 POSIX 标准?

S.S*_*nne 12 linux posix

为什么大多数 Linux 发行版不符合 POSIX 标准?我在很多地方都看到它们不是(例如,大多数 POSIX 兼容),但是没有真正的解释来支持这一点。

C 库和/或工具可以做些什么来解决这个问题(即不对内核本身进行修改)?需要做什么?

假设的重复是询问哪个 Linux 发行版符合 POSIX;这就是在问为什么大多数 Linux 发行版不符合 POSIX。我要求提供特定细节(即某些功能或命令不兼容),而不是特定发行版未(尝试)获得认证的原因。

来自@PhilipCouling 的评论(谢谢!)很好地解释了这一点:

合规性和认证是不同的主题。答案指向与(不)合规主题无关的(重新)认证成本。

Mic*_*mer 12

POSIX 没有指定内核接口,所以 Linux 基本上是无关紧要的。它确实指定了系统接口、各种工具和 C 标准的扩展,这些可以存在于任何内核之上。它不符合 POSIX,因为它没有被提及,或者它是 POSIX 兼容的,因为它没有被提及,由您选择。

有 UNIX® 认证的 Linux 发行版,因此使用 Linux 的完全符合 POSIX 的操作系统当然是可能的。华为的 EulerOS 是一款拥有并且可以根据需要购买的操作系统。其余的大多数人还没有付钱,因此无法访问测试套件来检查一致性。

他们在实践中是否会满足尚不清楚,但有些人确实比其他人更努力。我怀疑某些 BSD 比大多数 Linux 发行版更接近,但这是一个猜测:例如,我知道这execlp("cd", "/", NULL)在大多数 Linux 发行版上都失败了,但可以在许多 BSD 上运行,并且是 POSIX 所必需的。