回答編集履歴
1
fork()後の実際のコーディングについて追記した。
answer
CHANGED
|
@@ -4,4 +4,17 @@
|
|
|
4
4
|
さきほど「全く同じプロセス」と言いましたが1点だけ違いがあり、fork()システムコールの戻り値だけが違います。
|
|
5
5
|
fork()から0以外の数値が返ってきたプロセスは親プロセスで、その数値は子プロセスのPIDを表します。
|
|
6
6
|
fork()から0が返ってきたプロセスは子プロセスです。
|
|
7
|
-
全く同じ2つのプロセスはこの戻り値によってそれぞれの役割を認識し、以降の処理を分けるようにコーディングされています(またはそうなるようにコーディングします)。
|
|
7
|
+
全く同じ2つのプロセスはこの戻り値によってそれぞれの役割を認識し、以降の処理を分けるようにコーディングされています(またはそうなるようにコーディングします)。
|
|
8
|
+
普通は戻り値を判定することによって分岐させます。
|
|
9
|
+
```C
|
|
10
|
+
pid = fork();
|
|
11
|
+
if ( pid < 0 ) {
|
|
12
|
+
/* fork()に失敗した場合のエラー処理など */
|
|
13
|
+
}
|
|
14
|
+
else if ( pid == 0 ) {
|
|
15
|
+
/* 子プロセスの処理 */
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
/* 親プロセスの処理 */
|
|
19
|
+
}
|
|
20
|
+
```
|