为什么我不能执行 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

我知道在这里关闭标准输出没有意义,但我想知道为什么不允许这样做?

答案1

显然关闭stdout并没有失败,相反,它成功了,因为对其进行写入失败,从错误信息可以看出。编辑:为了澄清我的答案,首先告诉外壳程序关闭文件描述符,然后程序ls尝试写入它。这就是错误消息的来源。

相关内容