#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 的初学者,因此在首先回答问题之前,我想确保我的理解是正确的。line# (1) 到第 (2) 行和第 (4) 行到第 5 行构成父进程和第 (6) 行) 到第 (7) 行构成子进程,fork() 之上的任何内容,即从第 (1) 行到第 (2) 行的任何内容都被复制到子进程的地址空间。我对上述观点是否正确?那么为什么第(2)行没有打印两次,一个在子进程中,另一个在父进程中。?