fork (2) に関するあれこれ
こちらは「C 言語コンプレックスを払拭したいシリーズ」の派生記事である。
fork (2) の簡単なサンプル Linux では fork (2) を使ってプロセスを複製できる。fork() のプロトタイプは次の通りだ。
#include <unistd.h> pid_t fork(void); このシステムコールを実行すると、プロセスの情報が複製される。システムコールをコールしたプロセスは親と呼ばれ、複製されたプロセスは子と呼ばれる。fork() の返り値は親プロセスの場合は子プロセスの ID であり、子プロセスの場合は 0 である。
fork() を使うもっとも簡単なサンプルは次のようなものだろう。
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/types.h>#include <sys/wait.h> int main() { pid_t pid; pid = fork(); if (pid < 0) { fprintf(stderr, "fork(2) failed\n"); exit(1); } if (pid == 0) { printf("Hey, I'm a child process\n"); } else { int status; waitpid(pid, &status, 0); // 親は子を待つ必要がある printf("I spawned PID=%d, and it's done!
[Read More]