ls -a 1>&-を実行できないのはなぜですか?

ls -a 1>&-を実行できないのはなぜですか?

stdoutなぜプロセスを終了できないのですか?

コマンドをリダイレクトしようとしています。以下はうまくいきます:

ls -a 0>&-
ls -a 2>&-

これは閉鎖stdinstderr処理を意味しますls -a。しかし、なぜシャットダウンにstdout失敗するのですか?入っています(状態

aniket@aniket-Compaq-610:~/Downloads$ ls -a 1>&-
ls: write error: Bad file descriptor

ここでstdoutをオフにすることは意味がないことを知っていますが、なぜこれが許可されないのか疑問に思います。

答え1

明らかにstdoutを閉じることは失敗しませんでしたが、エラーメッセージに見られるように書き込みに失敗したので成功しました。編集:私の答えを明確にするために、シェルは最初にファイル記述子を閉じるように指示され、次にプログラムがファイル記述子を書き込もうとしますls。ここでエラーメッセージが表示されます。

関連情報