なぜstderrが必要なのですか?

なぜstderrが必要なのですか?
  $ tty
  /dev/tty0

存在する

      $cat 

ユーザー空間では、catプロセスは標準入力が/ dev / tty0ファイルから入力を受け取るのを待ちます。

存在しないファイルfffを一覧表示すると、

  ls /fff > file1
   ls cannot find file :file1 Access denied

stdout が /dev/tty0 ではなく file1 にリダイレクトされますが、存在しないファイルのエラーは、stderr ファイル記述子を介して /dev/tty0 に表示されます。


質問:

stderrが/dev/tty0にstdoutを書くのと似ている場合、stderrの目的は何ですか?

/dev/tty0にエラーを記録するためにファイル記述子stderrを維持するUNIX / Linuxのアイデアは何ですか?

ベストアンサー1

エラーストリームから出力ストリーム(STDOUT、ファイル記述子1)を分離するには、STDERR(ファイル記述子2)が必要です。

分離しないと、有効な出力とエラーを区別できません。

ケースが示すように、両方のストリームは端末に接続されており、ユーザーdup(2)スペースで簡単なファイル記述子操作を使用して簡単に区別または操作できます。

たとえば、STDOUTを1つのファイルに送信し、STDERRを別のファイルに送信する場合:

my_command >stdout.log 2>stderr.log

おすすめ記事