为什么我们不能直接关闭stdout
流程?
我正在尝试重定向命令。以下作品:
ls -a 0>&-
ls -a 2>&-
这意味着关闭stdin
和stderr
处理过程ls -a
。但为什么关闭stdout
失败呢?我正进入(状态
aniket@aniket-Compaq-610:~/Downloads$ ls -a 1>&-
ls: write error: Bad file descriptor
我知道在这里关闭标准输出没有意义,但我想知道为什么不允许这样做?
答案1
显然关闭stdout并没有失败,相反,它成功了,因为对其进行写入失败,从错误信息可以看出。编辑:为了澄清我的答案,首先告诉外壳程序关闭文件描述符,然后程序ls
尝试写入它。这就是错误消息的来源。