当前位置: 代码迷 >> WinCE >> wait3解决方法
  详细解决方案

wait3解决方法

热度:162   发布时间:2016-04-28 13:49:22.0
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,它才是有效的。
  相关解决方案