Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
setsid()守护进程时不调用有什么风险?
setsid()
当用户从会话中注销时,与该会话关联的所有进程都将被终止。对于作为守护进程的进程,您不希望发生这种情况。解决方法是调用setsid。如果守护进程还不是进程组领导(它不会跟随上面执行的分叉),这将: 启动一个新会话,以守护进程作为会话领导者并且没有控制终端,并且 启动一个新的进程组,守护进程作为进程组的领导者。
当用户从会话中注销时,与该会话关联的所有进程都将被终止。对于作为守护进程的进程,您不希望发生这种情况。解决方法是调用setsid。如果守护进程还不是进程组领导(它不会跟随上面执行的分叉),这将:
从这里
所以基本上,如果你不给它一个新的会话ID,它可能会被无意中杀死。