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

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

私はこれをコーディングしました。

$ ls -l 1> stdout.txt

希望の出力を得て、

1> stdout.txt

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

ディスクにそのようなファイルは表示されません。これらのファイルをサポートするファイルシステムは何ですか?メモリファイルシステム

これは次のようなものですか?プロセスファイルシステムそしてシステムファイルシステム

ベストアンサー1

Linuxを使用していて、質問を正しく読んだことを確認してください。/proc

具体的な手順/proc/[pid]/fdについては、以下を参照してください。ls -l /proc/123/fd/

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

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を取得するには、ウィンドウ1に入力します。
  2. ウィンドウ2で言うcat /proc/[pid]/fd/1
  3. ウィンドウ1で入力を開始し、ウィンドウ2で何が起こっているのかを見てください。

おすすめ記事