
私はこれをコード化します
$ 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 で入力して
echo $$
、そのシェルの PID を取得します。 - ウィンドウ2で言う
cat /proc/[pid]/fd/1
- ウィンドウ 1 で入力を開始し、ウィンドウ 2 で何が起こるか観察します。