是否有一种安全简便的方法来执行子进程,而不允许它访问父文件描述符?特别是在我的情况下会发生这种情况:
父进程侦听套接字127.0.0.1:8000。
父进程使用exec运行子进程。此子进程分叉并启动守护程序。
父进程关闭。
守护程序现在保持文件描述符处于打开状态(继续侦听端口8000)。
也许有一些命令可以在执行子进程之前关闭所有文件描述符?
例如,如果您拨打服务某些服务开始''来自Web服务器脚本的命令。
也许有一些命令可以在" clean"中运行服务脚本。上下文,如:
run-detached service someservice start
这将导致所有文件描述符被关闭,环境变量被取消等等 - 以便服务在其中运行的上下文尽可能基本。
答案 0 :(得分:0)
您无法从流程外部关闭文件描述符(原因很明显)。
您可以做的一件事是为要在子流程中运行的程序创建一个小垫片,并相反(例如通过将其放在原始位置)来说服父级exec()
。然后,这个小程序可以关闭文件描述符,然后执行原始程序。