我在 SO 中看到了 how to redirect STDIN, STDOUT, STDERR to /dev/null in C 。 这是在守护进程启动期间完成的。但是,为什么这对于正确启动 unix/linux 守护进程是必要的?
奖励问题:
如果 STDOUT
关闭并且在不重新打开的情况下使用文件描述符会怎样?
最佳答案
stdin
、stdout
和 stderr
已关闭,以便守护进程可以从启动它的 tty 成功分离,并且守护进程(或其子进程)在运行时不会写入 tty。
如果您尝试从一个关闭的文件描述符读取/写入,操作将失败并且 errno
将设置为 EBADF
(“fildes 不是有效文件或套接字描述符打开以供读取")。除此之外,不会有任何不愉快的事情发生。
关于c - 为什么要在守护程序启动期间将 STDIN、STDOUT、STDERR 重定向到/dev/null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19492672/