標準 I/O ファイル記述子

標準 I/O ファイル記述子

私はこれをコード化します

$ ls -l 1> stdout.txt

そして望み通りの出力が得られました。

1> stdout.txt

標準出力からの出力を stdout.txt ファイルにリダイレクトします。

ディスク上にそのようなファイルが存在するとは思えません。どのようなファイルシステムがそのようなファイルをサポートしていますか?ラムス?

これは、プロセスそしてsysfs?

答え1

Linuxをお使いの場合、そしてあなたの質問を正しく理解しているなら、はい、/proc

特定のプロセスについては/proc/[pid]/fd、例えばls -l /proc/123/fd/

現在のプロセスの fd にアクセスする特別な方法もあります: /proc/self/fd

eg はプロセスls -l /proc/self/fd用でありls、現在のシェル用ではないことに注意してください。これは次のように確認できます。

cat /proc/self/cmdline | tr '\000' '\n'

または

cat /proc/self/status

最後に、PPidシェルの PID がどれになるかを確認してください。

Name:   cat
State:  R (running)
Tgid:   12696
Pid:    12696
PPid:   312

実験として、2 つのターミナル ウィンドウを開いてみてください。

  1. ウィンドウ 1 で入力してecho $$、そのシェルの PID を取得します。
  2. ウィンドウ2で言うcat /proc/[pid]/fd/1
  3. ウィンドウ 1 で入力を開始し、ウィンドウ 2 で何が起こるか観察します。

関連情報