我有两个过程。他们的名字是父母和子女的过程。我想要父进程等待子进程没有wait()函数。我怎么能这样做?
我的代码在这里。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
intmain(int argc, char *argv[]) {
printf("hello world (pid:%d)\n", (int) getpid());
int rc = fork(); if (rc < 0) { // fork failed; exit
fprintf(stderr, "fork failed\n");
exit(1);
} else if (rc == 0) { // child (new process)
printf("hello, I am child (pid:%d)\n", (int) getpid());
} else { // parent goes down this path (original process)
printf("hello, I am parent of %d (wc:%d) (pid:%d)\n", rc, wc, (int) getpid());
}
return 0; }
答案 0 :(得分:3)
您可以编写一个循环来持续检查子进程是否正在运行。您可以使用(这不起作用,您可以向僵尸进程发送信号)kill
函数来检查进程是否处于活动状态。
您可以为SIGCHLD定义一个设置变量的信号处理程序,并在循环中检查该变量。
如果你不打电话给某种形式的wait
,孩子将成为一个僵尸过程。