当前位置:  技术问答>linux和unix

关于waitpid函数的一个问题

    来源: 互联网  发布时间:2016-08-28

    本文导语:  对已以下程序(为了方便各位阅读,我标了行号)第30行“b = waitpid(result,NULL,WNOHANG);”调用waitpid函数的时候,如果第二个参数用status时程序就发出 “waitpid_test.c:30: warning: passing argument 2 of ‘waitpid’ makes pointer ...

对已以下程序(为了方便各位阅读,我标了行号)第30行“b = waitpid(result,NULL,WNOHANG);”调用waitpid函数的时候,如果第二个参数用status时程序就发出
“waitpid_test.c:30: warning: passing argument 2 of ‘waitpid’ makes pointer from integer without a cast
/usr/include/sys/wait.h:139: note: expected ‘int *’ but argument is of type ‘int’”
的警告,但用NULL的时候就正常,为什么?麻烦各位了!


     1 /*waitpid_test.c程序:等待子进程结束,每隔一秒打印一行文字*/
     2
     3 #include  /*文件预处理,包含基本输入输出库*/
     4 #include  /*文件预处理,包含exit函数库*/
     5 #include  /*文件预处理,包含waitpid函数库*/
     6 #include  /*文件预处理,包含waitpid函数库*/
     7 #include  /*文件预处理,包含fork、sleep函数库*/
     8
     9 int main()
    10 {
    11 pid_t result,b;
    12 int status,i;
    13
    14 result = fork(); /*调用fork函数,返回值存放在result变量中*/
    15 if (result == -1) /*通过result判断fork函数的返回值情况,这儿先进行出错处理*/
    16 {
    17 perror("调用失败!");
    18 exit(0);
    19 }
    20 else if (result == 0) /*创建子进程*/
    21 {
    22 printf("这是子进程,进程号(PID)是:%dn",getpid());
    23 sleep(10);
    24 exit(0);
    25 }
    26 else
    27 {
    28 do
    29 {
    30 b = waitpid(result,NULL,WNOHANG);
    31 i = WEXITSTATUS(status);
    32 if (b == 0)
    33 {
    34 printf("已等待了一秒!!n");
    35 sleep(1);
    36 }
    37 }
    38 while (b == 0);
    39 if (b == result)
    40 printf("等待的进程号(PID)是:%dn,退出的状态是:%dn",result,i);
    41 }
    42 }


|
函数原型: pid_t waitpid(pid_t pid, int *status, int options);
警告说的很清楚:第二个参数应该是int*,而status是int,类型不匹配。
NULL本身就是指针,可以直接转换。

|
同上所诉

|
如2楼,参数类型不匹配

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 初学者提问waitpid怎么个意思,在线等,马上结贴
  • waitpid 中 的最后一个参数使用 WNOHANG时的意义
  • waitpid之类有没有非阻塞模式的?
  • wait waitpid 区别
  • 进程waitpid options参数的疑惑
  • 编程语言 iis7站长之家
  • 为什么linux下进程结束后,需要使用wait或者waitpid释放资源?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3