Linux / Unixでは、入力/出力リダイレクトはどのように機能しますか?

Linux / Unixでは、入力/出力リダイレクトはどのように機能しますか?

例:

猫<test.txt

  1. ファイルの内容がtest.txtstdinに作成/配信されたcatcat、stdinで読み込まれますか?

または

  1. ファイルtest.txt自体が標準入力になりますかcat?つまり、テキストファイルのファイル記述子(fd)を0に設定するとcatstdinが変更されるのでしょうか?test.txt

ベストアンサー1

オプション番号2:標準入力をtest.txt開きcat、このファイルを指すように設定します(重複したファイル記述子したがって、最終実行プロセスでは0)ですcat

Linuxでは、以下を実行してこれを確認できます。

$ touch /tmp/foo
$ sleep 120 < /tmp/foo &
[1] 3006118
$ ls -l /proc/3006118/fd
total 0
lr-x------ 1 steve steve 64 May  4 16:11 0 -> /tmp/foo
lrwx------ 1 steve steve 64 May  4 16:11 1 -> /dev/pts/3
lrwx------ 1 steve steve 64 May  4 16:11 2 -> /dev/pts/3

プロセスの標準入力は/tmp/foo簡単です。

おすすめ記事