繁体   English   中英

在ST中将STDIN,STDOUT,STDERR重定向到/ dev / null

[英]Redirecting STDIN, STDOUT, STDERR to /dev/null in C

在Stevens的UNIX网络编程中,他提到重定向stdin,stdout和stderr,这在设置守护进程时是必需的。 他用以下C代码完成它

/* redirect stdin, stdout, and stderr to /dev/null */
open("/dev/null", O_RDONLY);
open("/dev/null", O_RDWR);
open("/dev/null", O_RDWR);

我很困惑这三个'知道'他们是如何重定向三个标准*。 特别是因为最后两个命令是相同的。 有人可以解释或指出我正确的方向吗?

据推测,当执行此代码时,文件描述符0,1和2已经被关闭,并且没有其他线程可能正在分配新的文件描述符。 在这种情况下,由于open需要始终分配最低可用文件描述符号,因此这三个open函数将生成文件描述符0,1和2,除非它们失败。

这是因为文件描述符0,1和2分别是输入,输出和错误,open将获取可用的第一个文件描述符。 请注意,这仅在文件描述符0,1和2尚未使用时才有效。

你应该小心使用的术语, stdinstdoutstderr实际上是文件句柄( FILE* )而不是文件描述符,尽管它们与文件描述符之间存在相关性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM