次の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++コンパイラを使用しました。