Views
fork() のテスト
UNIX では fork() によって新しいプロセスが誕生します。
fork() のテスト
- fork() とは,UNIX でプロセスを作り出すためのシステムコールである。
- fork() を実行するためには,それを実行するプロセスが無いといけないので,
- プロセスがプロセスを産み出すという仕組みになっている。
テストプログラム
/ forktest.c ... fork() のテスト */ main() { int i; printf("Test of fork()\n"); i = fork(); if (i == 0) { printf("Child process\n"); } else { printf("Parent process\n"); } printf("End of test\n"); }
実行例
% ./forktest Test of fork() Child process End of test Parent process End of test
結果の考察
- 2つの End of testが出ている。
- fork() で2つのプロセスになったことがわかる。
- なお,fork() の戻り値 (i に入る) は
- 親プロセスでは子プロセスの "プロセス ID" であり,
- 子プロセスでは 0 になる。
でもって、問題になったプログラムは
main() {
while (1) { fork() } }
- ねずみ算式にプロセスが大量発生します。