是否可以阻止 PID 被重用?
例如,如果我使用 myjob
在后台运行作业 myjob &
,并使用 PID=$!
获取 PID,是否有可能阻止 linux 系统重新使用该 PID,直到我检查该 PID 不再存在(进程已完成) )?
换句话说,我想做一些类似的事情:
myjob &
PID=$!
do_not_use_this_pid $PID
wait $PID
allow_use_of_this_pid $PID
想要这样做的原因在上面给出的示例中没有多大意义,但可以考虑依次启动多个后台作业,然后等待它们全部完成。
一些程序员正确地指出,没有 2 个进程可以共享相同的 PID。这是正确的,但不是我在这里问的。我要求一种防止在使用特定 PID 启动进程后重新使用 PID 的方法。然后还有一种方法是在我用完之后重新启用它来检查我的原始过程是否完成。
既然已经被要求,这里是一个用例:
*进一步解释:
最佳答案
您不能“阻止”PID 被内核重用。但是,我倾向于认为这对您来说并不是真正的问题。
一个简单的 wait
(不带参数)将等待所有子进程完成。因此,您无需担心
PID 被重用。
当您启动多个后台进程时,PID 确实有可能被其他进程重用。
但这不是问题,因为除非它是您的子进程,否则您不能对进程进行 wait
。
否则,检查您启动的后台作业之一是否通过 wait
以外的任何方式完成总是不可靠的。
关于linux - Bash:是否有可能阻止 PID 被重用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40359901/