为什么在写入(unix)守护进程时需要关闭标准输入/输出/错误?为什么在编写守护进程时需要关闭标准输入/输出/错误?
4
A
回答
4
您不一定必须关闭标准输出/错误,但您必须确定守护进程(和子进程)要写入的位置。将输出重定向到日志文件是常见操作。
需要关闭标准输入,以便守护程序(和/或子)不会卡住,试图从用户读取某些输入。
但是,如果您要使用setsid()
从控制TTY中分离出守护进程,则标准输入/输出/错误将为无效。
6
不仅stdin,stdout和stderr应该关闭,但所有打开的文件。
从“UNIX环境高级编程”,理查德·史蒂文斯,艾迪 - Weseley,18日印刷,1999年,页417。
不需要的文件描述符应该被关闭。这可以防止守护进程保持打开可能从其父进程继承的任何描述符(可能是shell或其他进程)。
Stevens先生的建议是获取最大文件描述符并关闭所有文件直到该值。
引用的章节是关于'守护进程'。请注意,在编写守护进程时,关闭文件描述符只有五分之一。
相关问题
- 1. 使lftp写入标准输出而不必先关闭进程
- 2. C# - 如何在进程退出时关闭标准输入和输出流?
- 3. Docker守护进程需要什么?
- 4. 写入输出流3(标准输出或标准错误)
- 5. 关闭标准输入输出和错误的ptunnel方式
- 6. 需要在Qt中为Symbian/S60编写服务/守护进程
- 7. python守护进程不记录标准输出重定向
- 8. 重新连接运行的守护进程到标准输出
- 9. 为什么WriteFile在写入标准输出时崩溃?
- 10. 什么是dbus守护进程,为什么vlc需要它
- 11. 我应该需要什么节点JS标准输入和标准输出
- 12. 为什么在写入标准输出时,PHP-FPM为前缀写入警告?
- 13. 在Python守护进程中维护日志记录和/或标准输出/ stderr
- 14. 同时读取子进程标准输出和标准错误
- 15. 为什么在多线程时关闭标准输出缓冲区?
- 16. C#关闭标准输出
- 17. 为什么父进程的标准输入在关闭分叉子进程的标准输入文件描述符后仍然接受输入?
- 18. Python运行守护进程子进程和读取标准输出
- 19. 包括标准输入输出错误
- 20. Linux的标准输入,标准输出,标准错误
- 21. 的boost ::进程写入标准输入
- 22. 写入进程的标准输入
- 23. 关于标准输入或标准输出的标准是什么?
- 24. 处理守护进程的输入和输出
- 25. 编写Linux守护进程时,为什么必须从tty中分离出来?
- 26. 写入标准输入和读取标准输出的子进程python 3.4
- 27. 为什么ScannerObj.hasNextInt()需要输入输入?
- 28. cron输出到一个守护进程
- 29. fatal:关闭sha1文件时出错:输入/输出错误
- 30. 为什么子进程标准输出到文件是乱序写入的?
所以基本上只是因为守护进程不是交互式的?没有其他特殊原因吗? – 2012-03-26 01:02:35
与控制终端分离,在它自己的会话中,守护进程不会对用户会话关闭,作业控制,CTRL-C等敏感。 – ydroneaud 2012-03-26 10:40:57
酷,这就是我的想法。干杯 – 2012-03-30 01:12:34