gpt4 book ai didi

c - 对于 waitpid,我怎么知道 child 是否完成了它的进程?

转载 作者:太空宇宙 更新时间:2023-11-04 08:09:33 26 4
gpt4 key购买 nike

首先,我 fork 做某事,我使用 waitpid(-1, &child_status, WNOHANG);在 parent 中让 parent 继续而不是等待 child 完成。

我怎么知道 child 什么时候完成了它的进程?

最佳答案

您可以为 SIGCHLD 设置一个信号处理程序,它会在子进程退出时自动发送。

然后信号处理器可以设置一个全局标志,该标志可以在程序的其他部分定期检查。如果设置了标志,则调用 waitwaitpid 来获取 child 的退出状态。

int child_exit_flag = 0;

void child_exit(int sig)
{
child_exit_flag = 1;
}

...

signal(SIGCHLD, child_exit);

...

if (child_exit_flag) {
pid_t pid;
int status;

child_exit_flag = 0;
pid = wait(&status);
printf("child pid %d exited with status %d\n", pid, status);
}

关于c - 对于 waitpid,我怎么知道 child 是否完成了它的进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40444903/

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