zoukankan      html  css  js  c++  java
  • wait和waitpid的使用和区别

       昨天看到一则新闻,讲的是一个游戏开发大拿猝死去世的新闻,公司发了讣告,打算接下去给他爸爸妈妈每个月10000的赡养费,很是感慨,本来中国的游戏业和国外就差距大,天妒英才啊。真心想对那些游戏公司的领导说句,不要为了进度为了市场,折磨程序员了。虽然市场很重要,但是一个好的游戏,不是加快进度就能做好的。恰恰是游戏体验,游戏的目标、规则、玩家的互动等等才是最重要的。要是10年开发一款好的游戏也是值得的。我觉得,也许我太嫩了,还不明白这个市场。但是我一直秉持一个想法:身体才是革命的本钱。如果公司老是让你加班,还是趁早退了吧,适当的加班,无所谓。经常加班到凌晨这种,身体总有一天会吃不消的。

      扯远了。

      wait和waitpid函数是用来处理僵死进程的。他们有一些区别,用的时候老是忘,就打算做个实验测试一下。也供像我这样UNIX网络编程新手学习参考。

      -->1、使用背景

      -->2、函数原型

      -->3、wait和waitpid区别

    =========================================================================

      -->1、使用背景

        什么是僵死进程(zombie)?

          zombie的作用是维护子程序的信息,以便父程序在以后能够调用它。这些信息包括:进行ID,终止状态、资源利用率(CPU利用率、内存使用等等)。(《UNIX网络编程》P106)

       但是操作系统限制了某一时刻能同时存在的进程的最大数目,虽然说它们不占有CPU,不占有内存,但是当下次产生新进程的时候,就会产生未知的错误。因此,有效的处理僵死进程,是有必要的一些事。

         这个时候,就用到了wait和waitpid两个函数。

       wait和waitpid的作用?

       返回已经终止的子进程的进程ID号,并清除僵死进程。

      -->2、函数原型

    #include <sys/wait.h>
    pid_t wait(int * statloc);
    pid_t waitpid(pid_t pid,int *statloc,int options);

       成功返回进程ID,出错返回0或者-1。

      -->3、wait和waitpid区别

      wait会令调用者阻塞直至某个子进程终止;

      waitpid则可以通过设置一个选项来设置为非阻塞,另外waitpid并不是等待第一个结束的进程而是等待参数中pid指定的进程。

        waitpid的option常量:
      WNOHANG   waitpid将不阻塞如果指定的pid并未结束
      WUNTRACED 如果子进程进入暂停执行情况则马上返回,但结束状态不予以理会。


          waitpid中pid的含义依据其具体值而变

      pid==-1 等待任何一个子进程,此时waitpid的作用与wait相同
      pid >0   等待进程ID与pid值相同的子进程
      pid==0   等待与调用者进程组ID相同的任意子进程
      pid<-1   等待进程组ID与pid绝对值相等的任意子进程

          waitpid提供了wait所没有的三个特性
      1 waitpid使我们可以等待指定的进程
      2 waitpid提供了一个无阻塞的wait
      3 waitpid支持工作控制

  • 相关阅读:
    [MacOS]Sublime text3 安装(一)
    [RHEL8]开启BBR
    PAT Advanced 1136 A Delayed Palindrome (20分)
    PAT Advanced 1144 The Missing Number (20分)
    PAT Advanced 1041 Be Unique (20分)
    PAT Advanced 1025 PAT Ranking (25分)
    PAT Advanced 1022 Digital Library (30分)
    PAT Advanced 1019 General Palindromic Number (20分)
    PAT Advanced 1011 World Cup Betting (20分)
    PAT Advanced 1102 Invert a Binary Tree (25分)
  • 原文地址:https://www.cnblogs.com/yusenwu/p/4655286.html
Copyright © 2011-2022 走看看