ファイル記述子と/dev/fd

ファイル記述子と/dev/fd

ファイル記述子がプロセス全体またはシステム全体で一意であるかどうか。すべてのファイルが同じstdinとstdout記述子を使用しているようです。これらに特別なものはありますか?標準入力と標準出力はどのように機能しますか?dev/fdはへのリンクであることを知っていますが、proc/self/fdなぜ両方とも同じ番号を持っていますか?

編集する: 他のプロセスを見た後でも、ほとんどのファイル記述子はほぼ同じ番号を持ちます。

ベストアンサー1

これには混乱する可能性があるいくつかの点があります。

ファイル記述子は(通常の意味で)ファイルに添付され、特定のプロセスにのみ適用されます。ファイル記述子自体は、関連付けられたプロセスで数値IDとして参照されますが、ファイル記述子には複数のIDが含まれる場合があります。例:ID 1と2は標準出力と標準エラーと呼ばれ、通常同じファイル記述子を表します。

シンボリックリンクは/proc/pid/fd/xヒントのみを提供します。Xプロセスファイル記述子PID次に接続。通常のファイルの場合、シンボリックリンクはそのパスを提供します。ただし、ファイル記述子がinetソケットの場合、シンボリックリンクは切断されます。通常のファイル(またはttyなどのパスを持つファイル)の場合は開くことができますが、次のような結果が得られます。その他ファイル記述子は同じオブジェクトを指します。

おすすめ記事