stderr和stdout怎么知道是否关闭
时间: 2024-04-16 16:26:17 浏览: 19
在Linux中,标准输出(stdout)和标准错误(stderr)是两个不同的输出流。它们通常都与屏幕连接,以便将输出显示给用户。当我们运行一个命令时,它的输出通常会被发送到stdout,而错误消息则会被发送到stderr。
要判断stdout和stderr是否关闭,可以通过检查文件描述符来确定。在Linux中,文件描述符0表示标准输入(stdin),1表示标准输出(stdout),2表示标准错误(stderr)。
通常情况下,这些文件描述符是打开的,除非我们明确地关闭它们。可以使用以下命令来检查文件描述符的状态:
1. 检查stdout是否关闭:
```
ls -ld /proc/$$/fd/1
```
如果stdout是关闭的,那么命令的输出应该是:
```
lrwx------ 1 user group 64 Sep 20 10:45 /proc/12345/fd/1 -> /dev/null
```
这表示stdout已经被重定向到/dev/null,即被关闭。
2. 检查stderr是否关闭:
```
ls -ld /proc/$$/fd/2
```
如果stderr是关闭的,那么命令的输出应该是:
```
lrwx------ 1 user group 64 Sep 20 10:45 /proc/12345/fd/2 -> /dev/null
```
这表示stderr已经被重定向到/dev/null,即被关闭。
需要注意的是,关闭stdout和stderr可能会导致命令的输出无法显示在屏幕上,而是被重定向到其他地方(如/dev/null)。这可能会对调试和故障排除造成困难,因此在关闭stdout和stderr之前,请确保您知道其影响。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)