gpt4 book ai didi

linux - 即使子进程仍在运行,Bash 等待子进程也可以返回

转载 作者:太空狗 更新时间:2023-10-29 11:17:35 25 4
gpt4 key购买 nike

我有一个 shell 脚本,它在后台生成一个子进程并等待它(通过 wait 命令)。它还捕获 SIGTERM 并将其传递给 child 。但是每当我向父进程发送 SIGTERM 时,即使 child 仍在运行( child 捕获 SIGTERM),它也会从“等待”中退出。是否有可能在 shell 脚本中实现真正等待 child 直到 child 死亡?

最佳答案

这是常见习语所依赖的显式行为。请注意以下区别:

# this waits 10 seconds, and doesn't handle signal handlers until later
sleep 10

# this returns immediately when a signal is received
sleep 10 & wait $!

您完全可以检查是否存在剩余的后台任务并再次等待:

sleep 10 & pid=$!
while kill -0 "$pid"; do wait "$pid"; done

有关信号处理的完整讨论,包括此处描述的行为,请参阅 SignalTrap .

关于linux - 即使子进程仍在运行,Bash 等待子进程也可以返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41582738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com