次のプログラムはfork()
、孤立したプロセスを呼び出して生成しようとしています。それは適切に動作し、孤立したプロセスはプロセスによって取得されますinit
(コマンドで調べられますps
)。しかし、なぜ bash は入力を待っているように見えるのでしょうか?
...
if ((pid = fork() < 0) {
err_sys("fork error"); /* err_sys is declared in apue.h */
} else if (pid == 0) {
/* sleep to ensure that parent process terminates first */
printf("child process: %d\n", getpid());
sleep(2);
exit(0);
}
printf("parent process\n");
exit(0);
}
プログラムを実行する
$ ./a.out
parent process
$ child process: 4787
_ <= shell stops here until I hit Ctrl-C
(the underscore is just for demostration)
注: Ubuntu 11.10 を使用しています。