如何计算成功结束的子进程?

时间:2017-11-27 04:26:08

标签: c

我想写一个C程序,询问用户一个整数并将其存储在变量n中。然后,主进程创建两个 子进程(两者都必须是主进程的子进程)。如果n> 10且未成功,则一个孩子成功退出 否则,如果n> 20则另一个孩子成功退出,否则不成功。主要流程必须打印 有多少孩子成功结束了。

这是我到目前为止所拥有的。

#include <stdio.h>

void main (void)
{

int n;

printf("Give me a number: ");

scanf("%d", &n);

pid_t child_a,child_b;

child_a = fork();

if (child_a == 0) {


         if (n>10) {
                exit(1)
         }else{
                exit(0)
        }
} else {


child_b = fork();

if (child_b == 0) {
        if (n>20){
                exit(1)
        }else{
                exit(0)
}
    } else {
        /* Parent Code */
    }
}





}

但是,如何计算有多少子进程成功结束?

1 个答案:

答案 0 :(得分:1)

您需要使用wait()命令,系统调用wait()功能会阻止调用进程,直到其子进程之一退出或收到信号为止。

int status;
pid_t pid = wait(&status);
printf("Exit = %d, child = %d\n", WEXITSTATUS(status), pid);

见示例:

fork() and wait() with two child processes

和第二个使用wait()和WEXITSTATUS()

的例子

Linux fork() and wait()

还有关于多核进程调度的更多信息:

fork() and wait() calls