小编mjs*_*ort的帖子

如果父进程仍在运行,子进程的 PID 是否可以重用?

我在基于 *nix 的操作系统上运行,并且有一个脚本可以同时启动多个进程。我的主要目标是同时启动这些进程,并收集每个进程返回的退出状态。我发现 usingwait(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 …
Run Code Online (Sandbox Code Playgroud)

linux concurrency pid exit-code return-code

5
推荐指数
1
解决办法
856
查看次数

标签 统计

concurrency ×1

exit-code ×1

linux ×1

pid ×1

return-code ×1