私のLinux環境では、ファイル記述子は/ dev/fdにあります。
は、AIX(unix)でのstdin、stdout、stderrファイル記述子の場所です。
それらを見つけることができませんでした。
質問は、procファイルシステムの一般性に関する誤解に基づいています。これを実装するシステム(SolarisやLinuxなど)には、/dev/fd
の後にファイル記述子(番号)が続く、スクリプトに使用できる特別なデバイスがあります。
Solarisでは、/dev/fd
は/dev
の下の仮想フォルダですが、LinuxはプロセスIDに一致する(仮想)フォルダへの/proc
へのシンボリックリンクを使用します。 procファイルシステムには標準がなく、詳細は異なります。
AIX 5.3および7.1システムをチェックすると、それらはprocファイルシステムを実装しますが、/dev/fd
がありません。ただし、doには仮想ファイルシステム/proc
があり、その下に現在のプロセスIDがあり、の下にありますは、ファイル記述子を含むfd
フォルダーです。
通常、ファイル記述子はstdin、stdout、stderrそれぞれ。
参考文献:
/proc
-システム内のプロセスとスレッドに関する状態情報が含まれます (AIX 7)
_fd
の場合:
プロセスのすべての開いているファイル記述子のファイルが含まれています。各エントリは、プロセスで開いているファイル記述子に対応する10進数です。エンティティが通常のファイルを参照する場合、通常のファイルセマンティクスで開くことができます。制御プロセスがより大きなアクセスを取得できないようにするために、制御プロセスには、それ自体の読み取り/書き込みオープンモード以外のファイルアクセスモードはありません。ディレクトリはリンクとして表示されます。他のタイプのエントリを開こうとすると失敗します(そのため、リストに表示されるときに0のアクセス許可が表示されます)。
これらは人工的なファイル記述子であり、確かに処理には必要ありません。これは、歴史的には存在せず、一部のシステムにはまだ存在しないことを示しています。
シェルは、TTYに基づいてこれらの標準ファイル記述子を処理します。シェルが起動すると、isatty()
を呼び出し、それが(TTY)の場合は、標準のファイル記述子を自動的に開きます。