我怎么知道哪个孩子已经退出C?

时间:2013-12-22 20:00:34

标签: c fork

我有3个孩子每次以不同的顺序在不同的时间结束,但我不知道如何得到哪个结束

我有类似的东西,“赢家”,“第二”和“第三”,随机生成的时间,第一个结局是“赢家”,但我不知道它是谁

    wait(&winner);
wait(&second);
wait(&third);
printf("======================================\n");
printf("----------Classification---------------\n");
printf("======================================\n");
printf("-First-.... Team %d , time: %d\n",/*1*/, WEXITSTATUS(winner));
printf("-Second-.... Team %d , time: %d\n",/*2*/, WEXITSTATUS(second));
printf("-Third-.... Team %d , time: %d\n",/*3*/, WEXITSTATUS(third));

1 个答案:

答案 0 :(得分:7)

您应该阅读wait(2)的手册页。它返回等待进程的pid_t

如果您不想以阻止的方式等待,您可能还想使用waitpidW_NOHANG}。

另外,请阅读signal(7)。你可以处理SIGCHLD ....

Advanced Linux Programming有几个与此问题相关的章节。