如何解决如何检查我的子进程是否在 Linux 中结束?
我是 C 中多处理的新手。我正在使用 fork
创建一个子进程。
现在我想检查我的孩子是否已经结束(所以我可以继续下一步)。
我试图检查 /proc/${my child pid}/
是否存在,但我意识到除非我调用 waitpid
,否则它将永远作为僵尸存在。
这是一些代码:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <unistd.h>
int child() {
sleep(5); // do some work here,cost a few seconds.
return 0;
}
bool check_if_child_died(int id) {
// how to complete this function?
}
int main() {
printf("BEFORE\n");
int id = fork();
if (id == -1) { return -1; }
if (id != 0) {
// father.
printf("FATHER STARTED.\n");
} else {
// child
child();
printf("CHILD END.\n");
return 0;
}
while (true) {
if (check_if_child_died(id)) {
printf("CHILD ENDED!\n");
break;
}
sleep(1); // some other work costs time here.
}
printf("END.\n");
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。