#include<stdio.h>---->(1)
int main()
{
int i;
int j,K;
j = 200;
K = 300;
printf("Before forking: j = %d, K = %d\n ", j, K);---->(2)
i = fork();---->(3) /* Calling fork() */
if (i > 0) { /* Parent Process */ ----->(4)
sleep(10);/* Delay the parent */
printf("After forking, parent: j = %d, K = %d\n", j, K);
} ----->(5)
else {----->(6) /* Child process */
j++;
K++;
printf("After forking, child: j = %d, K = %d\n", j, K);
}---->(7)
o/p of the above pgm is
Before forking: j = 200, K = 300
After forking, child: j = 201, K = 301
After forking, parent: j = 200, K = 300.
私は最初に質問に進む前にIPCの初心者なので、私の理解が正しいことを確認したいと思います。行番号(1)から行(2)および行(4)から行5は、親プロセスと行(6)を構成します。 )to line(7)は子プロセスを構成し、fork()より上のもの、つまりline(1)からline(2)まではとにかく子のアドレス空間にコピーされます。それでは、なぜ行番号(2)が2回印刷されないのですか?1つは子プロセスで、もう1つは親プロセスで印刷されます。