wait3

暴风lay 2011-11-14 09:21:39
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/wait.h>
#include<sys/types.h>
#include<sys/resource.h>
#include<sys/time.h>

int main()
{
pid_t pid;
struct rusage *ru;
if((pid=fork())<0)
{
perror("fork error");
exit(1);
}
else if(pid==0)
{
printf("chile\n");
exit(0);
}
else
printf("parents\n");
if(wait3(NULL,0,ru)==-1)
{
perror("wait3 error");
exit(1);
}
printf("utime:%d\n",ru->ru_utime);
printf("stime:%d\n",ru->ru_stime);
printf("minflt:%d\n",ru->ru_minflt);
exit(0);
}
这样的程序会提示wait3 error: Bad address
如果把struct rusage *ru 改成struct rusage ru 然后下面的ru做相应的改动,就可以运行了,
请问各位是怎么回事,好像是结构指针的问题?谢谢
...全文
92 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
woshi_ziyu 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 northcan 的回复:]
struct rusage *ru;
... ...
if(wait3(NULL,0,ru)==-1)

执行到这时,ru只是一个指针,并没有指向任何rusage类型的变量。
所以会提示wait3 error: Bad address

比如
int *ip;
*ip = 3; // error: ip没有指向变量
int i;
ip = &i; // 这个时候ip指……
[/Quote]
++ 说的很好
northcan 2011-11-15
  • 打赏
  • 举报
回复
struct rusage *ru;
... ...
if(wait3(NULL,0,ru)==-1)

执行到这时,ru只是一个指针,并没有指向任何rusage类型的变量。
所以会提示wait3 error: Bad address

比如
int *ip;
*ip = 3; // error: ip没有指向变量
int i;
ip = &i; // 这个时候ip指针指向i,它才是有效的。
benben3611 2011-11-15
  • 打赏
  • 举报
回复
只是定义了一个结构指针,并没有分配空间。。
暴风lay 2011-11-15
  • 打赏
  • 举报
回复
恩,谢谢两位,后来也想到时没有分配空间的问题,发现好多问题都是这个原因,呵呵。谢谢了

19,503

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧