防止子进程继承文件描述符

时间:2017-01-13 11:14:27

标签: fork

是否有一种安全简便的方法来执行子进程,而不允许它访问父文件描述符?特别是在我的情况下会发生这种情况:

  1. 父进程侦听套接字127.0.0.1:8000。

  2. 父进程使用exec运行子进程。此子进程分叉并启动守护程序。

  3. 父进程关闭。

  4. 守护程序现在保持文件描述符处于打开状态(继续侦听端口8000)。

    也许有一些命令可以在执行子进程之前关闭所有文件描述符?

    例如,如果您拨打服务某些服务开始''来自Web服务器脚本的命令。

    也许有一些命令可以在" clean"中运行服务脚本。上下文,如:

    run-detached service someservice start
    

    这将导致所有文件描述符被关闭,环境变量被取消等等 - 以便服务在其中运行的上下文尽可能基本。

1 个答案:

答案 0 :(得分:0)

您无法从流程外部关闭文件描述符(原因很明显)。

您可以做的一件事是为要在子流程中运行的程序创建一个小垫片,并相反(例如通过将其放在原始位置)来说服父级exec()。然后,这个小程序可以关闭文件描述符,然后执行原始程序。