c中的wait()函数

时间:2014-10-25 20:53:10

标签: c function process wait

我有两个过程。他们的名字是父母和子女的过程。我想要父进程等待子进程没有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; }

1 个答案:

答案 0 :(得分:3)

您可以编写一个循环来持续检查子进程是否正在运行。您可以使用kill函数来检查进程是否处于活动状态。(这不起作用,您可以向僵尸进程发送信号)

您可以为SIGCHLD定义一个设置变量的信号处理程序,并在循环中检查该变量。

如果你不打电话给某种形式的wait,孩子将成为一个僵尸过程。