|
本人是LINUX编程的初学者,现在在接触进程编程,遇到这样一个怪问题,代码如下:
1 #include<unistd.h>
2 #include<stdio.h>
3 main()
4 {
5 int p,*stat_addr;
6 while((p=fork())==-1); /*创建子进程*/
7 if(p==0) /*子进程返回发终止信息1*/
8 exit(1);
9 else /*父进程返回*/
10 {
11 wait(stat_addr); /*等待并取子进程终止信息*/
12 printf("%d\n",*stat_addr); /*输出信息*/
13 exit(0);
14 }
15 }
程序的输出本来应该是256,但结果却是1474660693
如果把代码更改为如下:
1 #include<unistd.h>
2 #include<stdio.h>
3 main()
4 {
5 int p,*stat_addr,a,b,c;
6 while((p=fork())==-1); /*创建子进程*/
7 if(p==0) /*子进程返回发终止信 息1*/
8 exit(1);
9 else /*父进程返回*/
10 {
11 wait(stat_addr); /*等待并取子进程终止信息*/
12 printf("%d\n",*stat_addr); /*输出信息*/
13 exit(0);
14 }
15 }
则能正常输出256
在第二个代码中,我只是多int了三个变量,其它地方 没更改,但为什么结果又正确呢?不解中…………望高手解决! |
|