質問するログイン新規登録

回答編集履歴

1

fork()後の実際のコーディングについて追記した。

2020/07/04 18:41

投稿

hidezzz
hidezzz

スコア1248

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
+ ```