「POSIX」の意味は何ですか?

936
claws 2009-11-23 14:42.

POSIXとは何ですか?私はウィキペディアの記事を読み、その用語に出会うたびにそれを読みました。実は私はそれが何であるかを本当に理解していませんでした。

「POSIXの必要性」についても説明してもらえますか?

13 answers

647
Alex Martelli 2009-11-23 14:47.

POSIXは、Unix-yオペレーティングシステムによって提供されるアプリケーションプログラミングインターフェイス(およびコマンドラインシェルユーティリティなどの付随的な問題)を明確にし、統一するために、IEEEによって指定された標準のファミリです。POSIX標準に依存するようにプログラムを作成する場合、Unix派生物の大規模なファミリー(Linuxを含むがこれに限定されない)間でプログラムを簡単に移植できることは間違いありません。Posixの一部として標準化されていないLinuxAPIを使用する場合、将来そのプログラムまたはライブラリを他のUnix-yシステム(MacOSXなど)に移植する場合は、困難になります。

POSIX7が定義する最も重要なこと

  1. C API

    次のようなものでANSICを大幅に拡張します。

    • より多くのファイル操作:mkdirdirnamesymlinkreadlinklink(ハードリンク)、 、poll()、、statsyncnftw()
    • プロセスおよびスレッド:forkexeclwaitpipe、semaphors sem_*、共有メモリ(shm_*kill、スケジューリングパラメータ(nicesched_*)、 、、sleepmkfifosetpgid()
    • ネットワーキング: socket()
    • メモリ管理:mmapmlockmprotectmadvisebrk()
    • ユーティリティ:正規表現(reg*

    これらのAPIは、依存する基本的なシステムコンセプトも決定forkします。たとえば、プロセスのコンセプトが必要です。

    多くのLinuxシステムコールは、例えば、特定のPOSIX C API関数を実装し、Linux対応をするために存在しsys_writesys_read...これらのシステムコールの多くは、しかし、Linux固有の拡張を持っています。

    主要なLinuxデスクトップ実装:glibc。多くの場合、システムコールに浅いラッパーを提供します。

  2. CLIユーティリティ

    例えば:cdlsecho、...

    多くのユーティリティは、対応するCAPI関数の直接シェルフロントエンドですmkdir

    主要なLinuxデスクトップの実装:小さなもののためにGNUのCoreutilsは、大きなもののために別々のGNUプロジェクト:sedgrepawk、...いくつかのCLIユーティリティは、バッシュで実装されている組み込み関数として。

  3. シェル言語

    例えば、 a=b; echo "$a"

    主要なLinuxデスクトップの実装:GNUBash。

  4. 環境変数

    例:HOMEPATH

    PATH スラッシュがPATH検索を防ぐ方法など、検索セマンティクスが指定されます。

  5. プログラムの終了ステータス

    ANSI Cは、成功のために、失敗のために、0または残りの実装を定義したままにします。EXIT_SUCCESSEXIT_FAILURE

    POSIXは以下を追加します:

    • 126:コマンドは見つかりましたが、実行できません。

    • 127: コマンドが見つかりません。

    • > 128:信号で終了します。

      しかし、POSIXは128 + SIGNAL_IDBashが使用するルールを指定していないようです。https://unix.stackexchange.com/questions/99112/default-exit-code-when-process-is-terminated

  6. 正規表現

    BRE(基本)とERE(拡張)の2つのタイプがあります。Basicは非推奨であり、APIを壊さないようにするためだけに保持されています。

    これらはgrepCAPI関数によって実装され、CLIユーティリティ全体で使用されます。たとえば、デフォルトでBREを受け入れ、EREは-E

    例えば: echo 'a.1' | grep -E 'a.[[:digit:]]'

    Linuxの主要な実装:glibcは、のようなプログラムがバックエンドとして使用できるregex.hの下の関数を実装しますgrep

  7. ディレクトリ構造

    例:/dev/null/tmp

    LinuxのFHSは大幅にPOSIXを拡張します。

  8. ファイル名

    • / パス区切り文字です
    • NUL 使用できません
    • .cwd..
    • ポータブルファイル名
      • フルパスには最大14文字と256文字を使用します
      • 以下のみを含めることができます。 a-zA-Z0-9._-

    参照:ファイルシステムのposixコンプライアンスとは何ですか?

  9. コマンドラインユーティリティのAPI規則

    必須ではなく、POSIXで使用されますが、他の場所ではほとんどなく、特にGNUでは使用されません。しかし、確かに、制限が厳しすぎます。たとえば、1文字のフラグのみ(例-a)、ダブルハイフンの長いバージョン(例--all)はありません。

    広く使用されているいくつかの規則:

    • - ファイルが期待されるstdinを意味します
    • --フラグを終了します。たとえばls -- -l-l

    参照:Linuxコマンドラインスイッチと引数の標準はありますか?

  10. 「POSIXACL」(アクセス制御リスト)。たとえば、のバックエンドとして使用されますsetfacl

    これは撤回されましたが、Linuxをsetxattr含むいくつかのOSに実装されました。

誰がPOSIXに準拠していますか?

多くのシステムはPOSIXに厳密に従っていますが、標準を維持しているOpenGroupによって実際に認定されているシステムはほとんどありません。注目すべき認定済みのものは次のとおりです。

  • OS X(Apple)Xは、10とUNIXの両方を表します。2001年頃にリリースされた最初のApplePOSIXシステムでした。参照:OSXはPOSIX OSですか?
  • AIX(IBM)
  • HP-UX(HP)
  • Solaris(Oracle)

ほとんどのLinuxディストリビューションは非常に準拠していますが、準拠チェックを支払いたくないため、認定されていません。InspurのK-UXとHuaweiのEulerOSは2つの認定された例です。

認定システムの公式リストは次の場所にあります。 https://www.opengroup.org/openbrand/register/また、wikiページでも。

ウィンドウズ

Windowsは、一部のプロフェッショナルディストリビューションにPOSIXを実装しました。

これはオプション機能であったため、プログラマーはほとんどのエンドユーザーアプリケーションでこれを信頼できませんでした。

Windows8ではサポートが非推奨になりました。

  • MicrosoftWindowsの7POSIX実装は現在どこにありますか?
  • https://superuser.com/questions/495360/does-windows-8-still-implement-posix
  • 機能のリクエスト: https://windows.uservoice.com/forums/265757-windows-feature-suggestions/suggestions/6573649-full-posix-support

2016年に、「Windows SubsystemforLinux」と呼ばれる新しい公式のLinuxのようなAPIが発表されました。これには、Linuxシステムコール、ELFの実行、/procファイルシステムの一部、Bash、GCC(TODOはおそらくglibc?)apt-getなどが含まれます。https://channel9.msdn.com/Events/Build/2016/P488したがって、WindowsでPOSIXのすべてではないにしても多くを実行できるようになると思います。ただし、エンドユーザーではなく開発者/デプロイメントに焦点を当てています。特に、WindowsGUIへのアクセスを許可する予定はありませんでした。

公式のMicrosoftPOSIX互換性の歴史的概要: http://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-posix-subsystem/

Cygwinは、Windowsに「実質的なPOSIX API機能を提供する」ためのよく知られたGPLサードパーティプロジェクトですが、「Windowsで実行する場合は、ソースからアプリケーションを再構築する」必要があります。MSYS2は、Cygwinにさらに機能を追加しているように見える関連プロジェクトです。

アンドロイド

Androidには独自のCライブラリ(Bionic)があり、Android Oの時点ではPOSIXを完全にはサポートしていません:Android POSIXと互換性がありますか?

ボーナスレベル

Linuxの標準ベースはさらにPOSIXを拡張します。

非フレームインデックスを使用すると、はるかに読みやすく、検索しやすくなります。 http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html

grepping用のHTMLページの完全なzipバージョンを入手します。POSIXCAPI関数のリストはどこにありますか?

76
cletus 2009-11-23 14:44.

POSIXは次のとおりです。

POSIX(/ ˈpɒzɪks /と発音)または「PortableOperating System Interface [forUnix]」1は、ソフトウェアのシェルおよびユーティリティインターフェイスとともに、アプリケーションプログラミングインターフェイス(API)を定義するためにIEEEによって指定された関連標準のファミリの名前です。 Unixオペレーティングシステムのバリアントと互換性がありますが、標準はどのオペレーティングシステムにも適用できます。

基本的には、(ほとんど)共通のAPIとユーティリティを使用することで、さまざまな種類のUNIXの開発と使用の苦痛を和らげるための一連の対策でした。限定的なPOSIX準拠は、さまざまなバージョンのWindowsにも拡張されました。

45
Jim Dennis 2009-11-23 16:55.

チャールズな「非公式」の説明をさせてください。

POSIXは、「UNIX」およびUNIXライクなシステムを、それらと互換性のないシステムから区別しようとする一連の標準です。これは、調達目的で米国政府によって作成されました。米国連邦調達では、特定の既存のコードベースまたはプログラミングスタッフが移植できないシステムを除外するために使用できる方法で、さまざまな種類の入札および契約の要件を法的に指定する方法が必要であるという考えでした。

POSIXは事後的に書かれたので...大まかに類似した競合システムのセットを説明するために...実装できる方法で書かれていませんでした。

したがって、たとえば、MicrosoftのNTは、一部の入札に適格となるのに十分なPOSIX準拠で作成されています... POSIXサブシステムは実用的な移植性とUNIXシステムとの互換性の点で本質的に役に立たなかったとしても。

UNIXに関する他のさまざまな標準は、何十年にもわたって作成されてきました。SPEC1170(互換性のある実装が必要な1170の関数呼び出しを指定)やSUS(Single UNIX Specification)のさまざまな化身のようなもの。

ほとんどの場合、これらの「標準」は実際の技術的アプリケーションには不十分でした。それらは、議論、法的な論争、およびその他の機能不全の理由で最も存在します。

31
Hank Gay 2009-11-23 14:44.

POSIXは、クロスプラットフォームソフトウェアの作成を容易にするはずのオペレーティングシステムの標準です。これは、Unixの世界では特に大きな問題です。

29
Jed Smith 2009-11-23 14:46.

POSIXは、IEEEとThe Open Groupによって発表された一連の標準であり、理想的なUnixがどのように動作するかを説明しています。プログラマー、ユーザー、および管理者はすべてPOSIXドキュメントに精通し、POSIXに準拠したUnixが上記のすべての標準機能を提供することを期待できます。

Solaris、Mac OS X、IRIX、BSD、およびLinuxにはすべて、動作が少し異なるため、POSIXは、動作する標準環境を定義するため、業界の人々にとって特に便利です。たとえば、 Cライブラリのほとんどの関数はPOSIXに基づいています。したがって、プログラマーは自分のアプリケーションで1つを使用して、ほとんどのユニスで同じように動作することを期待できます。

ただし、Unixの多様な領域が、標準的な領域ではなく、通常は焦点になります。

POSIXの優れている点は、自分で読んでも大丈夫だということです。

OpenGroupの基本仕様の問題7

Issue 7はPOSIX.1-2008として知られており、そこには新しいものがあります。ただし、POSIX.1用のGoogle-fuなどを使用すると、Unixの背後にある歴史全体を確認できます。

8
Koray Tugay 2015-04-28 09:14.

1985年に、コンピューター業界全体の企業の個人が協力してPOSIX(コンピューター環境用のポータブルオペレーティングシステムインターフェイス)標準を開発しました。これは、主にUNIXシステムVインターフェイス定義(SVID)およびその他の初期の標準化の取り組みに基づいています。これらの取り組みは、トレーニングと調達のコストを最小限に抑えるための標準的なコンピューティング環境を必要とする米国政府によって促進されました。1988年にリリースされたPOSIXは、オペレーティングシステムのAPI、シェル、およびユーティリティインターフェイスを定義するIEEE標準のグループです。UNIXライクなシステムを対象としていますが、この標準は互換性のあるすべてのオペレーティングシステムに適用できます。これらの標準が受け入れられるようになったので、ソフトウェア開発者は、UNIX、Linux、およびその他のオペレーティングシステムのすべての準拠バージョンで実行されるアプリケーションを開発できます。

本から:Linuxの実用ガイド

4
peterh - Reinstate Monica 2017-02-11 02:55.

PosixはOSとしての機能であり、「OS標準」です。実際には存在しない架空のOSとして想像できますが、ドキュメントがあります。これらの論文は、米国の大きな標準化団体であるIEEEによって定義された「posix標準」です。この仕様を実装するOSは「Posix準拠」です。

政府の規制は、投資においてPosix準拠のソリューションを好むため、Posixに準拠することは、特に米国の大手IT企業にとって大きな経済的利点があります。

OSが完全にposixに準拠していることに対する見返りは、すべてのPosix準拠のアプリケーションをシームレスにコンパイルして実行することを保証することです。

Linuxは最もよく知られているものです。OSX、Solaris、NetBSD、WindowsNTもここで再生されます。FreeBSDとOpenBSDは、Posixに「ほぼ」準拠しているだけです。WinNTのposix準拠は、上記のこの政府規制を回避するための疑似ソリューションにすぎません。

3
Koray Tugay 2015-04-15 00:56.

この標準は、Unixライクなオペレーティングシステムの共通の基盤を提供します。シェルがどのように機能するか、lsやgrepなどのコマンドに何を期待するか、C作成者が利用できると期待できるCライブラリの数を指定します。

たとえば、コマンドラインユーザーがコマンドをつなぎ合わせるために使用するパイプは、ここで詳細に指定されています。つまり、Cのpopen(パイプオープン)関数は、ISO C標準ではなく、POSIX標準です。

3
Farruh Habibullaev 2019-02-26 19:44.

POSIXはPortableOperating System Interfaceの略で、アプリケーションの移植性を促進するように設計されたIEEE標準です。POSIXは、ベンダーのコンソーシアムがUNIXの単一の標準バージョンを作成しようとする試みです。

0
sras 2015-10-14 02:12.

POSIXは、オペレーティングシステムまたはプログラムの一連の標準を定義します。目標は、UNIXライクなシステムと互換性のある新しいソフトウェアを作成することです。

たとえば、Linuxで実行されるプログラムは、Solaris、HP-UX、AIXなどの他のUNIXライクなシステムでコンパイルして実行することもできます。

最も人気のある例GNU Bashは、100%POSIXコンプライアンスとgawkユーティリティです。

0
t0mm13b 2009-11-23 14:50.

Posixは、相互運用性、移植性、およびフォークの使用法とメカニズム、パーミッション 、および/ etc、/ var、/ usrなどのファイルシステム標準などの他の領域を管理 ます。したがって、開発者がLinuxなどのPosix準拠システムでプログラムを作成する場合、IBMのAIXシステムやUnixの他の商用バリアントなどの別のposix準拠システムでの実行が常に保証されるとは限りません。Posixは、ソフトウェア開発を容易にして、最大限の移植性を実現することを目指しています。この答えが理にかなっていることを願っています。

私のエラーを指摘してくれたJedSmith&Tinkertimに感謝します-私の悪い!!! :(

0
MCH 2018-05-25 23:25.

OSを最新のUNIXOSと互換性を持たせる方法に関する仕様(青写真)(神が彼を祝福してくれますように!)。これが、macOSとGNU / Linuxが非常によく似たターミナルコマンドライン、GUI、ライブラリなどを持っている理由です。どちらもPOSIXブループリントに従って設計されているためです。

POSIXは、エンジニアやプログラマーにコーディング方法ではなく、何をコーディングするかを指示します。

Related questions

MORE COOL STUFF

「水曜日」シーズン1の中心には大きなミステリーがあります

「水曜日」シーズン1の中心には大きなミステリーがあります

Netflixの「水曜日」は、典型的な10代のドラマ以上のものであり、実際、シーズン1にはその中心に大きなミステリーがあります.

ボディーランゲージの専門家は、州訪問中にカミラ・パーカー・ボウルズが輝くことを可能にした微妙なケイト・ミドルトンの動きを指摘しています

ボディーランゲージの専門家は、州訪問中にカミラ・パーカー・ボウルズが輝くことを可能にした微妙なケイト・ミドルトンの動きを指摘しています

ケイト・ミドルトンは、州の夕食会と州の訪問中にカミラ・パーカー・ボウルズからスポットライトを奪いたくなかった、と専門家は言う.

一部のファンがハリー・スタイルズとオリビア・ワイルドの「非常に友好的な」休憩が永続的であることを望んでいる理由

一部のファンがハリー・スタイルズとオリビア・ワイルドの「非常に友好的な」休憩が永続的であることを望んでいる理由

一部のファンが、オリビア・ワイルドが彼女とハリー・スタイルズとの間の「難しい」が「非常に友好的」な分割を恒久的にすることを望んでいる理由を見つけてください.

エリザベス女王の死後、ケイト・ミドルトンはまだ「非常に困難な時期」を過ごしている、と王室の専門家が明らかにする 

エリザベス女王の死後、ケイト・ミドルトンはまだ「非常に困難な時期」を過ごしている、と王室の専門家が明らかにする 

エリザベス女王の死後、ケイト・ミドルトンが舞台裏で「非常に困難な時期」を過ごしていたと伝えられている理由を調べてください.

セントヘレナのジェイコブのはしごを登るのは、気弱な人向けではありません

セントヘレナのジェイコブのはしごを登るのは、気弱な人向けではありません

セント ヘレナ島のジェイコブズ ラダーは 699 段の真っ直ぐ上る階段で、頂上に到達すると証明書が発行されるほどの難易度です。

The Secrets of Airline Travel Quiz

The Secrets of Airline Travel Quiz

Air travel is far more than getting from point A to point B safely. How much do you know about the million little details that go into flying on airplanes?

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

Total War:Warhammer:Kotakuレビュー

Total War:Warhammer:Kotakuレビュー

私はこのゲームを嫌う準備ができていました。先週の前に、Total War:Warhammerについての私の考えがありました:それでもここに私は、私の手にある完成品であり、私は変わった男です。

涙の道:軍事化された帝国主義勢力がスタンディングロックキャンプを占領

涙の道:軍事化された帝国主義勢力がスタンディングロックキャンプを占領

スタンディングロックスー族のメンバーと水の保護者は、ノースダコタ州のスタンディングロックにあるオセティサコウィンキャンプを去ります。(Twitter経由のCNNスクリーンショット)火と煙がスカイラインを覆い、スタンディングロックスー族のメンバーと水の保護者が、聖なるものを守りながら建てた家、オセティサコウィン(セブンカウンシルファイアーズ)キャンプから行進し、太鼓を打ち、歌い、祈りました。ダコタアクセスパイプラインとしても知られる「ブラックスネーク」からの土地。

シアーズとKマートはイヴァンカ・トランプの商品を自分たちで取り除いています

シアーズとKマートはイヴァンカ・トランプの商品を自分たちで取り除いています

写真:APシアーズとKマートは、イヴァンカ・トランプのトランプホームアイテムのコレクションも、誰も購入したくないために削除しました。シアーズとKマートの両方の親会社であるシアーズホールディングスは、土曜日のABCニュースへの声明で、彼らが気にかけていると辛抱強く説明しましたトランプラインを売り続けるにはお金を稼ぐことについてあまりにも多く。

ポテトチップスでたった10分でスペインのトルティーヤを作る

ポテトチップスでたった10分でスペインのトルティーヤを作る

伝統的なスペインのトルティーヤは通常、オリーブオイルで柔らかくなるまで調理されたポテトから始まります(30分以上かかる場合があります)が、ケトルで調理されたポテトチップスの助けを借りてわずか10分でテーブルに置くことができます。上のビデオはすべてがバラバラにならないように裏返す方法を含め、レシピ全体を説明しますが、必要なのは4〜5個の卵と3カップのケトルチップスだけです。

ケイト・ミドルトンとウィリアム王子は、彼らが子供たちと行っているスパイをテーマにした活動を共有しています

ケイト・ミドルトンとウィリアム王子は、彼らが子供たちと行っているスパイをテーマにした活動を共有しています

ケイト・ミドルトンとウィリアム王子は、子供向けのパズルの本の序文を書き、ジョージ王子、シャーロット王女、ルイ王子と一緒にテキストを読むと述べた.

事故で押しつぶされたスイカは、動物を喜ばせ水分補給するために野生生物保護団体に寄付されました

事故で押しつぶされたスイカは、動物を喜ばせ水分補給するために野生生物保護団体に寄付されました

Yak's Produce は、数十個のつぶれたメロンを野生動物のリハビリ専門家であるレスリー グリーンと彼女のルイジアナ州の救助施設で暮らす 42 匹の動物に寄付しました。

デミ・ロヴァートは、新しいミュージシャンのボーイフレンドと「幸せで健康的な関係」にあります: ソース

デミ・ロヴァートは、新しいミュージシャンのボーイフレンドと「幸せで健康的な関係」にあります: ソース

8 枚目のスタジオ アルバムのリリースに向けて準備を進めているデミ ロヴァートは、「スーパー グレート ガイ」と付き合っている、と情報筋は PEOPLE に確認しています。

Plathville の Kim と Olivia Plath が数年ぶりに言葉を交わすことへようこそ

Plathville の Kim と Olivia Plath が数年ぶりに言葉を交わすことへようこそ

イーサン プラスの誕生日のお祝いは、TLC のウェルカム トゥ プラスビルのシーズン 4 のフィナーレで、戦争中の母親のキム プラスと妻のオリビア プラスを結びつけました。

仕事の生産性を高める 8 つのシンプルなホーム オフィスのセットアップのアイデア

仕事の生産性を高める 8 つのシンプルなホーム オフィスのセットアップのアイデア

ホームオフィスのセットアップ術を極めよう!AppExert の開発者は、家族全員が一緒にいる場合でも、在宅勤務の技術を習得しています。祖父や曽祖父が共同家族で暮らしていた頃の記憶がよみがえりました。

2022 年、私たちのデジタル ライフはどこで終わり、「リアル ライフ」はどこから始まるのでしょうか?

20 年前のタイムトラベラーでさえ、日常生活におけるデジタルおよびインターネットベースのサービスの重要性に驚くことでしょう。MySpace、eBay、Napster などのプラットフォームは、高速化に焦点を合わせた世界がどのようなものになるかを示してくれました。

ニューロマーケティングの秘密科学

ニューロマーケティングの秘密科学

マーケティング担当者が人間の欲望を操作するために使用する、最先端の (気味が悪いと言う人もいます) メソッドを探ります。カートをいっぱいにして 3 桁の領収書を持って店を出る前に、ほんの数点の商品を買いに行ったことはありませんか? あなたは一人じゃない。

地理情報システムの日: GIS 開発者として学ぶべき最高の技術スタック

地理情報システムの日: GIS 開発者として学ぶべき最高の技術スタック

私たちが住んでいる世界を確実に理解するには、データが必要です。ただし、空間参照がない場合、このデータは地理的コンテキストがないと役に立たなくなる可能性があります。

Language