【问题标题】:Why should forking be done twice in python to set up a daemon server? [duplicate]为什么要在 python 中进行两次分叉来设置守护程序服务器? [复制]
【发布时间】:2015-03-16 14:16:43
【问题描述】:

为什么我们需要fork()两次来创建一个python服务器的守护进程?如果不随后使用os.setsid() 将其设置为会话负责人,则不能使用单个fork() 完成相同的操作吗??

【问题讨论】:

标签: python fork daemon server


【解决方案1】:

这样做是为了确保 PID!=SID 确保进程无法获取 tty(即终端)以有效地被称为守护进程。

单个分叉会导致子代具有与其父代相同的 SID,这意味着如果它的父代拥有这样的许可或权利,它就可以获得 tty。因此,仅仅退出父母可能无济于事。

避免这种情况的最佳方法是将setid 设置为第一个孩子并将其分叉并退出第一个孩子。

【讨论】:

    猜你喜欢
    • 2015-10-07
    • 2011-05-10
    • 2011-08-19
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多