zoukankan      html  css  js  c++  java
  • wait操作接口

    1.等待回收的两个函数wait()waitpid()函数

      1.1 wait(int *status)的用法:阻塞函数,等待任意一个子进程的返回。

        *wait(NULL):对子进程的结束状态不关心;

        *wait(status)  可以通过statu查看子进程的结束状态。

      int statu;

      wait(&statu);

      if(WIFEXITED(statu)){      //正常退出
           printf("正常结束code:%d ",WEXITSTATUS(statu));//code状态码用于表示成功与否
        }else if(WIFSIGNALED(statu)){//接收信号退出
           printf("异常结束signo:%d ",WTERMSIG(statu));
        }

       

    2.waitpid()的用法

      pid_t waitpid(pid_t pid, int *status,int options);

    参数:.pid == -1 等待任一子进程。
         .pid > 0 等待进程号为pid的进程返回
         .pid == 0 等待任何一个组id和父进程组id相同的进程的返回
         .pid < -1 等待任何一个进程的组id号和参数pid绝对值相同的进程

     options:(可以多个条件一起用 |)

       WNOHANG     return immediately if no child has exited.

            WUNTRACED   also return if a child has  stopped  (but  not  traced  via
                       ptrace(2)).   Status for traced children which have stopped
                       is provided even if this option is not specified.

           WCONTINUED  also return if a stopped child has been resumed by deliveryof SIGCONT.

    对status状态的操作:
       .WIFEXITED(status)若子进程为正常终止,则为真。
       对于这种情况可执行WEXITSTATUS(status)求得终止码。

       .WIFSIGNALED(status) 若为异常终止子进程,则为真(接到一个不捕捉的信号)。
       对于这种情况,可执行WTERMSIG(status)取使子进程终止的信号编号。
       另外某些实现定义宏:WCOREDUMP(status)若已产生终止进程的core文件,则它返回真
     
       .WIFSTOPPED(status) 若为当前暂停子进程的返回的状态,则为真。
       对于这种情况,可执行WSTOPSIG(status)取使子进程暂停的信号编号

  • 相关阅读:
    ROS探索总结(三十一)——ros_control
    ROS探索总结(四十二)——twist_mux多路切换器
    综合面试十大维度解析
    面试官实战-2-业务面试官必须掌握的面试方法及实战演练
    面试官实战-1-素质测评起源和分析
    好的招聘官
    好的候选人
    专题工作模板
    月周报模板
    学习记录模板
  • 原文地址:https://www.cnblogs.com/edan/p/8881936.html
Copyright © 2011-2022 走看看