c
1#include <unistd.h> 2#include <stdio.h> 3#include <stdlib.h> 4#include <err.h> 5 6static void child() 7{ 8 printf("I'm child! my pid is %d.\n", getpid()); 9 exit(EXIT_SUCCESS); 10} 11 12static void parent(pid_t pid_c) 13{ 14 printf("I'm parent! my pid is %d and the pid of my child is %d.\n", getpid(), pid_c); 15 exit(EXIT_SUCCESS); 16} 17 18int main(void) 19{ 20 pid_t ret; // pid_t,,,int 21 ret = fork(); 22 if (ret == -1) 23 err(EXIT_FAILURE, "fork() failed"); 24 if (ret == 0) { 25 // child process came here because fork() returns 0 for chiild process 26 child(); 27 } else { 28 // parent process came here because fork() returns the pid of newly created child process (> 1) 29 parent(ret); 30 } 31 // shouldn't reach here 32 err(EXIT_FAILURE, "shouldn't reach here"); 33} 34
このコードはfork関数の挙動を表したコードなのですが、
fork()を発行すると、if文のelseに行き、parent(ret);を実行すると思うのですが、そのあとif (ret == 0)に行き、child();を実行していると思うのですが、if文の中でelseの方が後ろにあるのになぜ、戻ってif (ret == 0)が実行されるのでしょうか?
初心者ですみません。
よろしくお願いいたします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。