在对一些Linux守护进程(例如sendmail)进行操作时,我注意到其中一些将在开头就在多个描述符(通常为3到255)上调用close()。这是故意这样做的还是做某事的某种副作用?
答案 0 :(得分:3)
它通常作为使进程成为守护进程的一部分来完成。
关闭所有文件描述符,以便长时间运行的守护程序不会不必要地保留任何资源。例如,如果守护程序要继承一个打开的文件而守护程序没有关闭它,那么该文件就无法删除(它的存储将保持分配直到关闭),并且无法卸载该文件所在的文件系统。
守护进程也会采取其他一些行动,但这些行动超出了这个问题的范围。