なぜほとんどのLinuxディストリビューションはPOSIXに準拠していないのでしょうか?多くの場所でそうではないことがわかっています(例:ほぼPOSIX準拠) しかし、これを裏付ける本当の説明はありません。
これを回避するために C ライブラリやツールでできることはありますか (つまり、カーネル自体に変更を加えずに)? 何をする必要がありますか?
重複と思われる質問は、どの Linux ディストリビューションが POSIX に準拠しているかを尋ねているものですが、これはほとんどの Linux ディストリビューションが POSIX に準拠していない理由を尋ねていることになります。私が尋ねているのは、特定のディストリビューションが認定を受けない (受けようとしない) 理由ではなく、具体的な詳細 (つまり、一部の関数またはコマンドが準拠していない) です。
@PhilipCouling からのこのコメント (ありがとう!) がそれをよく説明しています:
コンプライアンスと認証は異なる主題です。回答は、コンプライアンス(非コンプライアンス)という主題とは無関係な(再)認証のコストを指摘しています。
答え1
POSIX はカーネル インターフェイスを指定していないため、Linux は大部分無関係です。ただし、システム インターフェイス、さまざまなツール、および C 標準の拡張機能は指定しており、これらはどのカーネルにも存在できます。POSIX は、言及されていないという意味で POSIX に準拠していないか、言及されていないという意味で POSIX に準拠しているかは、あなたの選択次第です。
UNIX®認定のLinuxディストリビューションがありますしたがって、Linux を使用して完全に POSIX 準拠のオペレーティング システムを実現することは確かに可能です。HuaweiのEulerOSは購入できるものもあれば、購入できないものもあります。残りのほとんどはお金を払っていないので、テストスイート適合性をチェックします。
実際にそれが満たされるかどうかは明らかではありませんが、一部のディストリビューションは他のディストリビューションよりも一生懸命努力しています。一部の BSD はほとんどの Linux ディストリビューションよりも近いのではないかと思いますが、それは推測にすぎません。たとえば、execlp("cd", "/", NULL)
ほとんどの Linux ディストリビューションでは失敗しますが、多くの BSD では動作し、POSIX で必須であることはわかっています。