linux – 如果父进程仍在运行,子进程的PID是否可以重用?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 如果父进程仍在运行,子进程的PID是否可以重用?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2151字,纯文字阅读大概需要4分钟。
内容图文
![linux – 如果父进程仍在运行,子进程的PID是否可以重用?](/upload/InfoBanner/zyjiaocheng/967/54539b8727bc459fb24f00bad3cdf637.jpg)
我在基于* nix的操作系统上运行,并且有一个同时启动多个进程的脚本.我的主要目标是同时启动这些进程,并收集每个进程的返回退出状态.我发现使用wait(pid)将实现这一点,因为所有子进程都由父进程拥有.但是,我担心一旦子进程(其中一个并发进程启动)完成,其PID将被释放并可在系统中回收.
所以我想问题是,如果父进程同时启动多个子进程,那么完成的子进程的PID是否可以在父进程完成之前提供给系统进行回收?如果是这样,我怎样才能最好地获得每个子进程的退出状态?
下面的bash脚本示例:
local file=$1
local count=0
<files are split; and suffixed with aa,ab,ac,ad>
/home/text/concurrencyTest.sh $file-aa >> /home/text/$file-aa.log 2>&1 &
/home/text/concurrencyTest1.sh $file-ab >> /home/text/$file-ab.log 2>&1 &
/home/text/concurrencyTest2.sh $file-ac >> /home/text/$file-ac.log 2>&1 &
/home/text/concurrencyTest3.sh $file-ad >> /home/text/$file-ad.log 2>&1 &
for job in `jobs -p`
do
echo "Job: $job"
wait "$job"
rc=$?
echo "RC for $job is $rc"
if [[ rc -ne 0 ]]; then
FAIL[$count]="$job"
((count++))
fi
done
if [[ $count -ne 0 ]]; then
echo "ERROR: $count Job(s) Failed!"
echo "Failed Process PID(s): ${FAIL[@]}"
echo "Failed Processing for file: $file"
return 1
fi
解决方法:
当父进程调用wait或waitpid(或该系列的任何其他函数,如wait3,wait4等)时,子进程的PID可以重用.
当孩子死亡时,它会作为一个僵尸留在后面 – 一个进程表中的一个条目,后面没有任何进程,它只是保留进程ID并存储退出状态.调用waitpid块直到指定的子进程终止(或者如果它已经死了则立即返回),检索子进程的状态代码,并获取僵尸(即删除进程表条目,释放进程ID以便重用).调用等待类似,但只要一个子进程死亡就会返回.
如果父进程在进程终止时忽略SIGCHLD信号,则该进程不会变为僵尸,并且其PID可立即重用.父母对SIGCHLD的地位在其他方面很重要;见例如POSIX为坚韧不拔的细节.
如果父进程在子进程之前死亡,那么该子进程被认为是init采用的孤儿,进程是PID 1.这是init收获孤儿的工作的一部分.
在shell脚本中,wait builtin with是等待系统调用的包装器.如果脚本有多个子节点,则等待所有节点都没有参数块,然后等待一些参数块直到所有指定的进程都死掉(没有办法等到一个进程死亡而没有指定哪个).如果等待$pid1返回,那么$pid2可能已经死亡并且已经被重用于另一个进程;但是,即使如此,shell也会跟踪$pid2的状态代码,随后的等待$pid2将返回其状态代码.但是,在此之前,您不应该分叉新的后台作业,以避免在将$pid2重用于后台作业时出现混淆.
内容总结
以上是互联网集市为您收集整理的linux – 如果父进程仍在运行,子进程的PID是否可以重用?全部内容,希望文章能够帮你解决linux – 如果父进程仍在运行,子进程的PID是否可以重用?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。