zoukankan      html  css  js  c++  java
  • Linux-父进程wait回收子进程

    1、wait工作原理

    (1)、子进程结束时,系统向其父进程发送SIGCHILD信号

    (2)、父进程调用wait函数后阻塞

    (3)、父进程被SIGCHILD信号唤醒然后去回收僵尸子进程

    (4)、父子进程之间是异步的,SIGCHILD信号机制就是为了解决父子进程之间的异步通信问题,让父进程可以及时的去回收僵尸子进程。

    (5)、若父进程没有任何子进程则wait返回错误。

    2、wait的参数status。status用来返回子进程结束时的状态,父进程通过wait得到status后,就可以知道子进程的一些结束状态信息

    3、wait的返回值pid_t,这个返回值就是本次wait回收的子进程的PID。当前进程有可能有多个子进程,wait函数阻塞直到其中一个子进程结束wait就会返回,wait的返回值就可以用来判断到底是哪一个子进程本次被回收了。

    对wait做个总结:

    wait主要是用来回收子进程资源,回收同时还可以得知被回收子进程的pid和退出状态。

    4、WIFEXITED、WIFSIGNALED、WEXITSTATUS这几个宏用来获取子进程的退出状态。

    (1)、WIFEXITED宏用来判断子进程是否正常终止 (return、exit、_exit退出)

    (2)、WIFSIGNALED宏用来判断子进程是否非正常终止(被信号所终止)

    (3)、WEXITSTATUS宏用来得到正常终止情况下的进程返回值的。

  • 相关阅读:
    oracle 使用正则表达式获取字符串中包含的数字
    oracle 将逗号分隔的字符串转成多行记录
    sqlplus下 查看oracle 执行计划
    使用connect by 虚拟生成100条记录
    Lomsat gelral
    Legacy
    慢慢变小的序列(好题)
    Walls(扫描线)
    线段树求面积并,面积交,周长
    最小圆覆盖(随机增量||模拟退火)
  • 原文地址:https://www.cnblogs.com/jiangtongxue/p/11244310.html
Copyright © 2011-2022 走看看