waitpid案例

waitpid案例include include defineN2pid tFork void pid tpid if pid fork 0 perror Forkerror returnpid intmain intstatus i pid tpid for

waitpid函数用来回收僵死的进程。

这个案例用父进程创建了N=2个子进程,用waitpid作为循环条件,等待所有的子进程终止,因为第一个参数是-1,所以waitpid的调用会阻塞,直道任意一个子进程终止,每个子进程终止的时候,waitpid都会调用并且返回,如果进程是正常终止的,在此是调用exit的函数终止的,父进程就提取退出状态并且把它输出,当回收了所有的子进程后,waitpid调用会返回-1。

#include 
  
    #include 
   
     #include 
    
      #include 
     
       #include 
      
        #define N 2 
       
      
     
    
  
/*pid_t waitpid(pid_t pid, int *status, int options);
 正常情况返回终止的子进程号,如果等待的集合没有子进程被停止或已经终止,返回为0,或者等于那个被停止的或者已经终止的子进程的PID*/ pid_t Fork(void) { pid_t pid; if((pid=fork())<0) { perror("Fork error"); } return pid; } int main() { int status,i; pid_t pid; for(i=0;i 
  
    0) { if(WIFEXITED(status)) printf("child %d terminated normally with exit status=%d\n", pid,WEXITSTATUS(status)); else printf("child %d,terminated abnormally \n",pid); } if(errno !=ECHILD) perror("waitpid error"); exit(0); } 
  

程序不会按照特定的顺序回收子进程,子进程的顺序是计算机的属性,如果想按照顺序回收可以把每个进程的PID号,依次存放在数组里面,然后在回收。




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214727.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午3:35
下一篇 2026年3月18日 下午3:35


相关推荐

  • 词法/语法分析框架 chrysanthemum 简介

    词法/语法分析框架 chrysanthemum 简介

    2021年8月21日
    87
  • R语言安装软件包[通俗易懂]

    R语言安装软件包[通俗易懂]R语言安装软件包1打开RGui.exe,执行“`install.packages(“softwarename”)“`,安装成功后会提示“`Thedownloadedbinarypackagesarein…“`,给出了程序包存放路径2选择程序包,点击“`Installpackage(s)fromlocalfiles…“`,选中路径里面下载好的程序包,会出现“`successfullyunpacked“`的提示3命令及执行结果示例1打开RGui.exe,

    2022年6月27日
    70
  • python后缀是啥_python文件后缀

    python后缀是啥_python文件后缀python文件的后缀名有:“.py”、“.py3”、“.pyc”、“.pyo”、“.pyd”、“.pyi”、“.pyx”、“.pyz”、“.pywz”、“.rpy”、“.pyde”、“.pyp”、“.pyt”。python文件后缀总结:(1).py:以py扩展名的文件是Python源码文件,由python.exe解释,可在控制台下运行。可用文本编辑器读写。(2).py3:Python…

    2026年2月18日
    5
  • webgame开发中的文件加密

    webgame开发中的文件加密一般的webgame中都会对资源、消息进行加密,这里只是简单记录一下对文件的加密过程。上图为实际项目中所使用的加密工具(较为简单的一个air项目)输入加密key+需要加密的文件–>加密–>将加密后的文件保存至另一目录(后缀名视自己的项目的规则进行修改)实现步骤:1、读取文件(flash.filesystem.File),获取文件流(…

    2022年6月4日
    43
  • python开两个守护线程_hdfs守护线程

    python开两个守护线程_hdfs守护线程**守护线程**是区别于用户线程哈,**用户线程**即我们手动创建的线程,而守护线程是程序运行的时候在后台提供一种**通用服务的线程**。垃圾回收线程就是典型的守护线程。

    2022年10月15日
    7
  • AI编程工具 Claude Code 国内使用最佳实践

    AI编程工具 Claude Code 国内使用最佳实践

    2026年3月15日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号