0

このコードの何が問題なのかわかりません。これは Linux ボックスの C です。

それがすべきことは、私が作成したすべての子プロセスを強制終了し、すべてが終了するのを待ってから、子ごとに pid、プロセス番号 (私が作成したもの)、およびシグナル番号 (killed の場合は 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);
4

1 に答える 1

1

私の問題が何であるかを理解しました。

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

する必要があります。

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

正しく動作するようになりました。考えるのを手伝ってくれてありがとう。

于 2014-05-07T02:46:42.363 に答える