gpt4 book ai didi

c - 在运行前台进程时等待后台进程终止

转载 作者:行者123 更新时间:2023-11-30 17:08:59 25 4
gpt4 key购买 nike

我的 shell 中安装了 SIGCHILD 处理程序。假设我正在使用 waitpid 来等待前台进程终止,以便我可以获取它。

据我所知,waitpid 会挂起当前进程并等待给定进程终止,是吗?

如果当我的 shell 等待前台进程时其中一个后台进程终止怎么办?我的 shell 何时会获取已终止的后台进程?如何确保后台进程立即被收获?

最佳答案

只需让您的父 shell 循环等待任何死亡的子进程,当 waitpid() 返回时,您就可以分析该子进程死亡后要做什么。

int status;
int corpse;

while ((corpse = waitpid(-1, &status, 0)) != -1)
{
…perform post-mortem actions…
}
  • 如果前台进程终止(已完成),您将继续提示输入下一个命令。
  • 如果后台进程终止,您会注意到它已经消失,也许会记录其状态,然后返回到另一个循环周期。

当前台进程退出时,您将在发出下一个提示之前报告所有已死亡的子进程。

由于 -1 值,您永远不应该退出该循环。

关于c - 在运行前台进程时等待后台进程终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33453114/

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