To makefriend8:
你的最后一个结果是对的,我在自己的linux系统上运行过了。
1 #include "stdio.h"
2 int main(void)
3 {
4 int I,A,B;
5 A=100;B=200;
6 while((I=fork())==-1);
7 printf("Test....\n");
8 if(I!=0)
9 {
10 printf("It is parent process.\n");
11 A+=B;
12 wait(NULL);
13 printf("In parent : A=%d, B=%d,\n",A,B);
14 printf("My Child Process,ID number %d exited.\n",I);
15 exit();
16 }
17 else
18 {
19 printf("It is child process.\n");
20 B+=A;
21 printf("In child: A=%d, B=%d\n",A,B);
22 }
23 printf("It is child or parent process.\n");
24 exit();
25 }
是这样的,我们假设首先运行的那个进程为父进程,其PID为1,那么当运行到第11行时,父进程中的A为300,B为200。然后父进程挂起自己,
等待子进程(假设PID为2)结束。子进程开始运行,printf语句打印出与前面父进程相同的句子。当子进程运行到第8行时,通过if条件语句
跳到第17行,然后打印出"It is child process.\n"以及"In child: A=%d, B=%d\n",再然后是"It is child or parent process.\n"。然
后,子进程结束。父进程继续运行。打印出"In parent : A=%d, B=%d,\n"以及"My Child Process,ID number %d exited.\n",最后通过
exit语句结束。