web-dev-qa-db-ja.com

ファイル記述子リンクの移植性

私はいつもこれを疑問に思っていましたが、見つけるのに時間がかからなかったので、今はそうします-/proc/$$/fd/$Nまたは/dev/fd/$Nの使用法 ここに示されています ?私は理解しています POSIX保証/dev/null, /dev/tty, and /dev/consolethis answer に関するコメントを読んだ後、先日それを見つけただけですが) しかし、これらの他のものはどうですか?

私が知る限り、それらはかなり一般的ですが、どのシステムで私はそれらを見つけることを期待できますかできません?何故なの?どちらか一方を見つける可能性は高いですか?それらは常に同じような属性を示しますか?

私はこれらのデバイスをあらゆる方法でかなり広範囲に使用する傾向があり、試してみただけでは足りない可能性があるかどうか知りたいのですが。

また、上記の質問は私が知りたいことだけを理解している必要があります私は知りたいしかし、私は明らかに最初に尋ねなければならないので、私はこの点で最善を知らないかもしれません、そしてそれらは答えのための厳しい要件と考えられるべきではありません。できれば手がかりをください。

21
mikeserv

/procの実装方法とその機能は標準化されていません。たとえば、 ここ を参照してください。ウィキペディアによると、FreeBSDは/procを段階的に廃止しています。詳細は こちら を参照してください。

/dev以降、/dev/fd/はPOSIXまたはシングルユーザー仕様(SUSv3)の一部ではありませんが、System VおよびBSDはサポートしています。

補遺:

Linux:/dev/fd/*/proc/self/fdへのシンボリックリンクです。

FreeBSD:/dev/fd/*はfdescfsを通じて提供されます。

NetBSD:FreeBSDと同じ。

OpenBSD:FreeBSDと同じ。

Solaris:/dev/fd/*があります。

IRIX:/dev/fd/*があります。

Tru64 Unix: nixdoc.net によると/dev/fd/*があり、HPのTru64の本物のドキュメントは不可解です(男の子、なんてめちゃくちゃ!何も見つかりません!)。

AIX:公的に入手可能なドキュメントから指摘が見つかりません。

HP-UX:AIXと同じ。

9
countermode