我将父进程fork()给子进程,fork()返回的PID存储在父进程的内存中,然后时间过去,子进程终止;现在我可以确定存储在父存储器中的PID值是否仍然引用相同的分叉子节点,并且如何确保此PID不会引用具有相同PID的不同进程,这可能最终在子节点之后生成终止?
答案 0 :(得分:3)
操作系统不能重复使用子PID,直到父级确认知道孩子已经停止执行为止。
家长使用wait
和waitpid
来电进行确认。终止的子节点保持“僵尸”状态,而父节点不调用这些功能。在这些调用返回之后,父进程将知道如果进程运行时具有与该进程相同的PID,则不是该进程。
为了更加安全,您可能会对checking the parent PID of the child process感兴趣。
答案 1 :(得分:1)
你可以:
man 2 wait
,以便在孩子死亡时获得通知;