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)取使子进程暂停的信号编号

  • 相关阅读:
    调试技术 Orisun 博客园
    Core Dump和/proc调试 Orisun 博客园
    再谈select, iocp, epoll,kqueue及各种I/O复用机制 Shallway 博客频道 CSDN.NET
    基础很重要
    Speech and Language Processing (2nd Ed.): Updates
    CS 288: Statistical Natural Language Processing
    对C++中string类型的总结
    HTTP代理实现请求报文的拦截与篡改1 jivi 博客园
    学习优秀源码 Orisun 博客园
    分享:苹果老员工可享两年离岗留职待遇
  • 原文地址:https://www.cnblogs.com/edan/p/8881936.html
Copyright © 2011-2022 走看看