从c中的子进程获取退出状态

时间:2014-05-07 02:36:41

标签: c linux signals fork waitpid

我无法弄清楚这段代码有什么问题。这是Linux上的C盒。

它应该做的是杀死我创建的所有子进程,等待all退出然后为每个子进程打印一行pid,进程号(我创建)和信号号(应该是一个9人死亡)。

那么我做错了什么?

void onalarm(int signo) {
    int status[numberOfCores];
    printf("Recieved alarm signal\n");

    int cpu;
    for (cpu = 0; cpu < numberOfCores; cpu++) {
        kill(child_pid[cpu], SIGKILL);
    }

    for (cpu=0;cpu <numberOfCores;cpu++){
        waitpid(-1, &status[numberOfCores],0);
    }
    for (cpu=0;cpu < numberOfCores;cpu++){
        printf("pid = %i  %ith child killed with signal ",child_pid[cpu],cpu);

        printf("%i %s\n", WTERMSIG(status[cpu]), strsignal(WTERMSIG(status[cpu])));
    }
    exit(0);

1 个答案:

答案 0 :(得分:1)

我弄清楚我的问题是什么。

     for (cpu=0;cpu <numberOfCores;cpu++){
    waitpid(-1, &status[numberOfCores],0);

应该是。

     for (cpu=0;cpu <numberOfCores;cpu++){
    waitpid(-1, &status[cpu],0);

让它正常工作知道。谢谢你帮我思考。

相关问题