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

waitpid的返回值的一些问题

    来源: 互联网  发布时间:2016-06-10

    本文导语:  在实战linux编程这本书上看见这么一段代码在一个函数中 有这个参数siginfo_t *si; 然后调用waitpid() if((pid = waitpid(si->si_pid,&status,WNOHANG)) == si->si_pid)       表示处理进程终止 else if(pid > 0)       表示非预期...

在实战linux编程这本书上看见这么一段代码在一个函数中
有这个参数siginfo_t *si;
然后调用waitpid()

if((pid = waitpid(si->si_pid,&status,WNOHANG)) == si->si_pid)
      表示处理进程终止
else if(pid > 0)
      表示非预期的子进程死亡
else if(pid == 0)
      表示子进程状态改变

请问后面两种返回状态为什么表那些情况呢?

|

siginfo_t 一般是 发送信号进程在发送信号时所带的一点信号信息,

如果等到了 si->si_pid 的终止,则 pid 的值也是 si->si_pid 如果等到的是其他的进程 则执行

else if(pid > 0)
      表示非预期的子进程死亡 
即等到了 子进程的死亡 但不是发送信号的那一个 (个人以为 基本不可能发生)

pid 为0,说明 waitpid 返回0 。(注意是非阻塞的WNOHANG),说明发送信号进程的状态未改变。这还是很明显的。



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












  • 相关文章推荐
  • 初学者提问waitpid怎么个意思,在线等,马上结贴
  • waitpid 中 的最后一个参数使用 WNOHANG时的意义
  • waitpid之类有没有非阻塞模式的?
  • wait waitpid 区别
  • wait() waitpid() 函数
  • 进程waitpid options参数的疑惑
  • 子进程wait/waitpid//子进程不结束,父进程会等待子进程吗?
  • oracle iis7站长之家
  • 有谁来解释下waitpid函数中 pid的值为-1和0的区别


  • 站内导航:


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

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

    浙ICP备11055608号-3