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支持工作控制

  • 相关阅读:
    Redis设置生存时间或过期时间的相关命令
    .Net Core使用Redis
    Redis的数据类型
    Java集合 使用Collections
    Java集合 使用Iterator
    Java集合 使用Stack
    响应式常用样式汇总
    图片 文字 背景等响应式设置总结
    微信动态聊天工具
    第2章 栅格系统
  • 原文地址:https://www.cnblogs.com/yusenwu/p/4655286.html
Copyright © 2011-2022 走看看