首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

wait3解决方法

2012-03-05 
wait3#includestdio.h#includestdlib.h#includeunistd.h#includesys/wait.h#includesys/types.h

wait3
#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做相应的改动,就可以运行了,
请问各位是怎么回事,好像是结构指针的问题?谢谢

[解决办法]
只是定义了一个结构指针,并没有分配空间。。
[解决办法]
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,它才是有效的。

热点排行