POSIXは、過去にアプリケーションがUNIXの各特定の部分をどのように実装したのか、それともUNIXを実装する必要があるかについての仕様です。
説明的な場合、含まれるすべての実装に共通の機能のみが有効です。どの実装でも実装されていない機能は「未定義」です。
それが規範的であれば、どのような理論的枠組みに基づいていますか?数学? C言語?経験?
答え1
これは規範的です法学しかし、主に説明的な実は。
POSIX は、発行時に存在していた仕様と今後実装される仕様の両方に一致できる仕様セットです。だからこれは規範的です。
実際、POSIXは主に既存の実装の共通サブセットから始まった。そういう意味では、ほとんど説明的です。しかし、POSIXは時々新しい動作を要求します。最も一般的には、POSIXはさまざまな実装に存在しますが、インタフェース(関数名、コマンドラインオプションなど)が異なる機能に複数の機能とユーティリティを導入します。pax
tar
(およびに代わるcpio
、これはUnixのバリエーションと非常に異なります)とさまざまなposix_xxx
機能。 POSIXは、次の新しい定数とコマンドラインオプションも導入します。ps
「このオプションはBSDとSVID-A
と同じです。両方のシステムが異なるため、ニーモニックトレードオフが選択されました。」理論的根拠セクションでは、一般的にこの機能またはその機能が含まれている理由を説明し、どの実装に既に特定の機能があるのか、なぜ含まれているのかを頻繁に説明します。互換性のない実装間で選択が行われたり行われたりすることはありません。-g
-e
答え2
POSIXの目的は、過去の動作をすでに明確な歴史的エラーと見なすことができない限り、歴史的動作を破るのではなく(歴史的UNIXを互換性がないようにするのではなく)、既存の動作を説明することです。
POSIXのさらなる目的は、独自の発明を紹介することではありません。いわゆる独自の発明が必要であることが判明した場合(既存の実装が標準化に役立たないため)、POSIX委員会のアイデアは、さまざまなUNIX(またはプログラム)バージョンの作成者と話し合い、最高のソリューションに達します。これらの議論は、最終的な提案が作成されたときにそれをサポートする新しい実装につながることがよくあります。
10年前に存在していたBSDインターフェースgetpgrp()
と競合する方法で定義されたPOSIXなど、いくつかの例外があります。setpgrp()
POSIXが定義されている方法は、GNU libcが互換性のないインタフェースを導入する前にほぼ30年間存在していた実装と完全に互換性がgetline()
ありfexec()
ません。
既存の実装間の不一致が見つかった場合は、使用するバリエーション(または既存のさまざまな実装を混在して導入するかどうか)を決定し、POSIX関連の名前を導入します。たとえば、posix_xxx()
Roger Faulkner(Sun Microsystems)の以前のリファレンス実装と非常によく似た機能が導入されたスレッドインターフェイスでこれが発生しました。