1

次の2つのソースファイルがあります

loop.c 実行ファイル名はloop

int main() {
    while(true);
    return 0;
}

および run.c 実行可能ファイル名はrun

int main() {
    pid_t child_pid = fork();

    int status;
    struct rusage info;

    if (child_pid == 0) {
        ptrace(PTRACE_TRACEME, 0, NULL, NULL);
        execl("loop", "loop", NULL);
        exit(0);
    }

    wait4(child_pid, &status, 0, &info);

    puts("Child exited");
    printf("%ld\n", info.ru_utime.tv_usec);

    return 0;
}

両方をコンパイルし、runプログラムを実行しました。なぜ終了したのですか?私はその wait4 suspendを読みましたが、実際にはそうではありません。私が実行したとき、psプログラムloopは実行されていて実行されrunていません(実行されておらずps、ターミナルは出力を与えることで作業を終了しているようです)。

何か不足していますか?

PS

問題があれば、gnu g++コンパイラを使用しました。

4

1 に答える 1