POSIXがあちこちで言及されているのを見続け、Wikipediaのページで次の抜粋を見つけるまで、常にこれをデフォルトのUNIX標準と考えていました。グループを開く
Open Groupは、最も有名なUNIX商標認証機関であり、シングルUNIX仕様技術規格、POSIX標準を拡張し、UNIXシステムの公式定義です。。
UNIXシステムの公式定義がPOSIXの拡張である場合、POSIXは正確に何ですか? 、、、UNIX世界の試金石のようですが、全体の絵にどのように当てはまるかわかりません。
答え1
POSIX は Single UNIX 仕様より先に 1988 年に初めて標準となりました。これは、様々なUNIX分岐とUNIX様システムの両方を統合する試みの1つでした。 POSIXはIEEE標準ですが、IEEEはUNIX®の商標を所有していないため、当時の既存のUNIX APIに基づいていても、標準はUNIX®ではありません。最初の標準POSIX.1の公式名称はIEEE std 1003.1-1988です。 [1] IEEEは、この規格のコピーを取得するためにかなりの費用を請求します。
Open Groupは、IEEEのPOSIX標準作業に基づいて、1997年に単一のUNIX仕様(SUSv2)を発表しました。 SUSv3は、IEEEとThe Open Group(Austin Groupと呼ばれる)間のコラボレーショングループで2001年にリリースされました。 POSIX:2001[ともいうSUSv32]。これで、SUSv4のコアであるPOSIX:2004とPOSIX:2008があります。 UNIX®が何であるかについて言えば、UNIX®は現在登記商標権者はそうだと言います。 1994年からオープングループ。
Novellは、UNIX®の誕生地であるAT&T/USLからUNIX®システム事業部を買収しました。 1994年に彼らはUNIX®の商標権をX/Openに売却しました。サム]は現在The Open Groupとして知られています。その後、UNIX®ソースコードをSCOにUNIXWARE®として販売しました。 [サム] UNIX®自体は何度もフォークされました。4][5その理由の1つは、AT&Tのライセンスモデルによるものです。 UNIX®を購入すると、オペレーティングシステムの完全なソースコードとそれを構築するための完全なツールチェーンが提供されます。ソースコードの修正は、AT&TのUNIX®ライセンスに従って、誰でも配布して使用できます。ライセンス料は数千です。
BSDは、UNIX®オペレーティングシステムに多くの機能強化を追加するBerkeleyプロジェクトです。 BSDコードは、GNUプロジェクトやLinuxで使用されているGPLとは異なり、AT&Tソースコードよりも自由なライセンスに基づいてリリースされるため、ライセンス料が不要であるか、ソースコードと共に配布されます。これにより、BSDコードの大部分がさまざまな商用UNIXディストリビューションに含まれます。約4.3BSDでは、もともとAT&T UNIX®ソースコードのすべての要件をほぼ置き換えました。 FreeBSD/NetBSD/OpenBSDはすべて4.3BSDの分岐であり、オリジナルのAT&Tソースコードを持たない完全なオペレーティングシステムです。さらに、UNIX® 商標の権利はありませんが、そのコードの大部分は商用 UNIX オペレーティング・システムで使用されます。 UNIXで使用されているSocket APIはBSDで開発されており、Unix Fast Filesystemコードは独自の機能強化により、さまざまなUNIXオペレーティングシステム(Solarisなど)で借用され使用されています。
Linuxは1991年に開発されましたが、BSDとは異なり、最初からほとんどのUNIXユーザースペースをクリーンルームとして実装した既存のGNUプロジェクトを使用して開発されました。これはほとんどのPOSIX互換性を実装し、UNIXと設計は似ていますが、BSDほどAT&TまたはUNIX®と密接に接続されていません。
答え2
最も重要なことPOSIX 7定義
-
非常に拡張ANSI C同じもの:
- 追加ファイル操作:、、、、、
mkdir
(ハードリンク)、dirname
symlink
readlink
link
poll()
、、、、stat
sync
nftw()
- プロセスとスレッド:
fork
、、、execl
wait
,pipe
, 信号sem_*
、共有メモリ(shm_*
)、、スケジューリングkill
パラメータ(nice
、、sched_*
)sleep
、、、、mkfifo
setpgid()
- ネットワーキング:
socket()
- メモリ管理:
mmap
、、、、、、mlock
mprotect
madvise
brk()
- ユーティリティ:正規表現(
reg*
)
fork
さらに、これらのAPIは、プロセスの概念など、APIが依存する基本的なシステム概念を識別します。たくさんLinuxシステムコール
sys_write
特定のPOSIX C API機能を実装し、それをLinuxと互換性があるようにするために存在します。たとえば、sys_read
...しかし、これらのシステムコールの多くはLinux関連の拡張も持っています。主なLinuxデスクトップの実装:glibc。多くの場合、システムコール用の浅いラッパーのみが提供されます。
- 追加ファイル操作:、、、、、
-
たとえば
cd
、、、、、ls
...echo
多くのユーティリティは
mkdir
。主なLinuxデスクトップの実装:小規模なGNU Coreutils、大規模な個別のGNUプロジェクト:
sed
、、、、...一部のCLIユーティリティはBashに実装されています。grep
awk
内蔵で。 -
例えば、
a=b; echo "$a"
主なLinuxデスクトップの実装:GNUグータ。
-
たとえば:
HOME
、PATH
。PATH
検索意味の指定、含むPATH
スラッシュが検索をブロックする方法。 -
ANSI Cは、成功
0
の場合は「または」、失敗の場合は「または」を意味し、残りの実装を定義します。EXIT_SUCCESS
EXIT_FAILURE
POSIXが追加されました:
126
: コマンドが見つかりましたが実行できません。127
:命令が見つかりません。> 128
:信号で終了します。128 + SIGNAL_ID
ただし、POSIXはBashが使用するルールを指定していないようです。プロセスの終了時にデフォルトの終了コードは何ですか?
-
BRE(基本)とERE(拡張)の2種類があります。 Basic は廃止され、API を中断しないように維持されます。
これはC API関数として実装されており、
grep
デフォルトでBREを許可するなど、CLIユーティリティ全体で使用されます-E
。たとえば、
echo 'a.1' | grep -E 'a.[[:digit:]]'
Linuxの主な実装:glibcは次の機能を実装しています。正規表現.h
grep
バックエンドとして使用できるプログラム -
たとえば
/dev/null
、/tmp
LinuxFHSPOSIXを大幅に拡張します。
-
/
パス区切り記号NUL
サービスの中断.
はいcwd
、..
両親- ポータブルファイル名
- フルパスには最大14文字、256文字を使用してください。
- 以下のみを含めることができます。
a-zA-Z0-9._-
また見なさい:https://stackoverflow.com/questions/18550253/what-is-posix-compliance-for-filesystem
-
必須ではなく、POSIXで使用されますが、他の場所、特にGNUではほとんど使用されません。ただし、実際には単一文字のロゴ(例
-a
:)のみがあり、ダブルハイフンで構成されている長いバージョン(例--all
:)がないため、制限が厳しくなります。広く使用されているいくつかの規則:
-
必要なファイルの stdin を示します。--
終了フラグ(たとえば、次のls -- -l
ディレクトリを一覧表示)-l
「POSIX ACL」(アクセス制御リスト)、例えばバックエンドとして使用されます。
setfacl
。これ引くしかし、これは次のようなさまざまなオペレーティングシステムで実装されています。Linuxで
setxattr
。
POSIXに従う人は誰ですか?
多くのシステムがPOSIXに厳密に準拠していますが、実際には標準を維持するOpen Groupの認定を受けたシステムはほとんどありません。注目すべき認証は次のとおりです。
- OS X(Apple)Xは10とUNIXを表します。 2001年頃に発売された最初のApple POSIXシステムでした。また見なさい:https://stackoverflow.com/questions/5785516/is-osx-a-posix-os
- AIX(IBM)
- HP-UX(ヒューレットパッカード)
- ソラリス(オラクル)
ほとんどのLinuxディストリビューションはコンプライアンスが非常に優れていますが、コンプライアンス確認の費用を支払いたくないため、認証されていません。インスパーK-UXそしてHuaweiオイラーOS以下は2つの認証されたケースです。
認証されたシステムの公式リストは、以下で確認できます。https://www.opengroup.org/openbrand/register/そしてまだそこにいるウィキページ。
Windows
Windowsは、一部のプロのディストリビューションにPOSIXを実装しています。
これはオプションの機能であるため、プログラマーはほとんどのエンドユーザーアプリケーションでこの機能に頼ることはできません。
Windows 8 ではサポートされなくなりました。
- https://stackoverflow.com/questions/4746043/where-does-microsoft-windows-7-posix-implementation-currently-stand
- 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年には、「Linux用Windowsサブシステム」という新しい公式のLinux様APIが発表されました。これには、Linuxシステムコール、ELF操作、/proc
ファイルシステムの一部、Bash、GCC(TODO多分glibc?)apt-get
などが含まれます。https://channel9.msdn.com/Events/Build/2016/P488したがって、私はWindowsがすべてではなくてもほとんどのPOSIXを実行できると信じています。ただし、エンドユーザーではなく開発者/配布に焦点を当てています。特に、Windows GUIへのアクセスを許可する予定はありません。
公式のMicrosoft POSIX互換性の歴史的概要:http://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-posix-subsystem/
シビンWindows用の「広範なPOSIX API機能を提供する」が、「Windowsでアプリケーションを実行するにはソースからアプリケーションを再構築する」必要があるよく知られているGPLサードパーティのプロジェクトです。システム2Cygwinの上にさらに機能を追加すると思われる関連プロジェクトです。
機械的人造人間
Androidには、Android OからPOSIXを完全にサポートしていない独自のCライブラリ(Bionic)があります。https://stackoverflow.com/questions/27604455/is-android-posix- Compatible
ボーナスレベル
これLinux標準ライブラリPOSIXがさらに拡張されました。
フレームではなくインデックスを使用すると、読みやすく検索が容易になります。http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html
grep用のHTMLページの完全に圧縮されたバージョンを取得します。 https://stackoverflow.com/questions/453993/is-there-a-listing-of-the-posix-api-functions/45832939#45832939
答え3
POSIXは移植可能なオペレーティングシステム標準です。これは、互換性のあるオペレーティングシステムがソフトウェアに提供する必要がある特定のユーティリティ、API、およびサービス(ソケット、ファイルI / O、スレッドなど)、およびプログラムでこれらの機能を呼び出す方法に関する規則を説明します。
これは、1つのPOSIX互換オペレーティングシステム用に書かれたプログラムが、POSIX非互換オペレーティングシステムの間から他のPOSIX互換オペレーティングシステムに移植することができるという考えです。これがFreeBSDからLinuxにアプリケーションを移植することが、FreeBSDからWindowsにアプリケーションを移植するよりもはるかに簡単な理由です(Windowsが表面上のPOSIXのサブセットをサポートしていても)。
答え4
POSIXは、他のオペレーティングシステムのためのさまざまなUnixのような環境をカバーするためのUNIXのサブセットです。これには、最初はVMS用Eunice、Windows NTのPOSIX属性、Apollo Domain / OSなどの環境が含まれていました。 Unix と Unix 以外の動作が同じオペレーティング システム サービスのサブセットの標準移植性 API と考えることができます。バラよりhttp://standards.ieee.org/develop/wg/POSIX.htmlより多くの情報を知りたいです。