天嵌 ARM开发社区

 找回密码
 注册
查看: 1710|回复: 6

LINUX编程中的怪异问题,请教!

[复制链接]
gbjj123 发表于 2010-8-19 10:55:43 | 显示全部楼层 |阅读模式
本人是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了三个变量,其它地方 没更改,但为什么结果又正确呢?不解中…………望高手解决!
shufexiu 发表于 2010-8-19 15:25:14 | 显示全部楼层
1# gbjj123
你的问题确实是很怪....俺没有碰见过....你有了解决方案请发出来给大家共享一下
Sasoritattoo 发表于 2010-8-19 20:11:37 | 显示全部楼层
不可能吧,怎么会这样?不就是就多了三个int变量吗,而且还没用上。这样问题的解决方案不具有共性,常人很难遇到,提个建议:先仔细检查对照一下,实在不行就直接重新写,重新设置一下
machoe 发表于 2010-8-20 15:57:25 | 显示全部楼层
我试了一下,两个程序输出是一样的,不过问题还没找到。
machoe 发表于 2010-8-20 16:57:13 | 显示全部楼层
刚才又在fedora10下试一下,你可以把*stat_addr,指针换成一个变量,问题就解决了。
看一下wait()函数的手册,里面也是用变量,没有用指针的。
你定义了一个指针,没有给他赋值,不是变成野指针了吗?呵呵。
 楼主| gbjj123 发表于 2010-8-21 00:52:02 | 显示全部楼层
2# shufexiu
嗯。己经解决了,是指针没有赋初始值。。唉,犯这样的低级错误,我自己都晕了。呵呵
 楼主| gbjj123 发表于 2010-8-21 00:53:33 | 显示全部楼层
5# machoe
嗯。现在好了,用的就是你的方法,呵呵,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-9-27 21:05 , Processed in 1.036173 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表