プロセスのstdout
を閉じることができないのはなぜですか?
リダイレクトコマンドを試していました。次の作品:
ls -a 0>&-
ls -a 2>&-
これは、プロセスls -a
のstdin
とstderr
を閉じることを意味します。しかし、なぜstdout
を閉じることが失敗するのですか?私は得ています
aniket@aniket-Compaq-610:~/Downloads$ ls -a 1>&-
ls: write error: Bad file descriptor
ここでstdoutを閉じるのは意味がないことは知っていますが、なぜ許可されないのか疑問に思っています。
エラーメッセージからわかるように、stdoutを閉じることは明らかに失敗しませんが、逆に、書き込みが失敗するため成功します。編集:私の答えを明確にするために、最初にシェルにファイル記述子を閉じるように指示し、次にls
プログラムがそれに書き込もうとします。これがエラーメッセージの出所です。