wait,waitpid

要求

用man wait, man waitpid学习wait waitpid的使用
2 写出wait 的测试代码,要能说明你理解了wait 的返回值的每一位的含义
实验:
----------
man wait(wait 帮助)
wait,waitpid
wait,waitpid
所有这些系统调用都用于等待子进程中的状态更改的调用过程,并获取有关其的子进程的信息状态已经改变了。状态更改被认为是:子ter\u2010管理层;子进程被一个信号拦住了;或者子进程被一个信号。对于终止的子进程,执行等待是允许的释放与子进程关联的资源的系统;如果一个不执行等待,则终止的子进程仍然处于“僵死状态”
如果一个孩子已经改变了状态,那么这些调用将返回immedi\u2010吃了。否则,它们将阻塞,直到子节点更改状态或信号处理程序中断调用(假设系统调用没有中断)使用sigaction(2)的SA_RESTART标志自动重新启动。在此页面的其余部分为状态已更改的子元素和状态已更改的子元素还没有被这些系统调用中的一个称为可等待。

  • wait系统调用会使父进程暂停执行,直到它的一个子进程结束为止。
  • 返回的是子进程的PID,它通常是结束的子进程
  • 状态信息允许父进程判定子进程的退出状态,即从子进程的main函数返回的值或子进程中exit语句的退出码。
  • 返回值:如果成功返回等待子进程的ID,失败返回-1
  • 对于waitpid的p i d参数的解释与其值有关:
  • pid == -1 等待任一子进程。于是在这一功能方面waitpid与wait等效。
  • pid > 0 等待其进程I D与p i d相等的子进程。
  • pid == 0 等待其组I D等于调用进程的组I D的任一子进程。换句话说是与调用者进程同在一个组的进程。
  • pid < -1 等待其组I D等于p i d的绝对值的任一子进程
    wait与waitpid区别:
  • 在一个子进程终止前, wait 使其调用者阻塞,而waitpid 有一选择项,可使调用者不阻塞。
  • waitpid并不等待第一个终止的子进程—它有若干个选择项,可以控制它所等待的特定进程。
    wait,waitpid
    wait,waitpid
上一篇:System 9-4: wait, waitpid, exec, exit, Zombies


下一篇:c-使用waitpid等待另一个进程的线程