1. #include <unistd.h>
  2. #include <sys/types.h>
  3. #include <stdlib.h>
  4. #include <signal.h>
  5. #include <stdio.h>
  6.  
  7. //子进程个数
  8. #define SUB_PRO_COUNT 10
  9.  
  10. //处理子进程的退出信号
  11. void sub_quit_signal_handle(int sig);
  12.  
  13. //父进程的事件循环
  14. void ParentCycle();
  15.  
  16. //子进程的事件循环
  17. void ChildCycle();
  18.  
  19. int main(void)
  20. {
  21. pid_t pid;
  22. int i;
  23.  
  24. //创建SUB_PRO_COUNT个子进程
  25. for(i=; i<SUB_PRO_COUNT; i++)
  26. {
  27. pid = fork();
  28. if( == pid || - == pid )
  29. break;
  30. }
  31.  
  32. //创建子进程失败
  33. if( - == pid )
  34. {
  35. printf("No. %d: fork error\n", i);
  36. }
  37. //子进程的事件循环
  38. else if( == pid )
  39. {
  40. ChildCycle();
  41. }
  42. //父进程的事件循环
  43. else
  44. {
  45. ParentCycle();
  46. }
  47.  
  48. return ;
  49. }
  50.  
  51. void sub_quit_signal_handle(int sig)
  52. {
  53. int status;
  54. //获取退出的那个子进程的状态
  55. int quit_pid = wait(&status);
  56. printf("sub process %d quit, exit status %d\n", quit_pid, status);
  57.  
  58. //新创建一个子进程
  59. pid_t pid = fork();
  60. if( == pid )
  61. ChildCycle();
  62. }
  63.  
  64. void ParentCycle()
  65. {
  66. printf("Parent process %d\n", getpid());
  67. signal(SIGCHLD, sub_quit_signal_handle);
  68. while()
  69. pause();
  70. }
  71.  
  72. void ChildCycle()
  73. {
  74. printf("create sub process id: %d, parent id: %d\n", getpid(), getppid());
  75. while()
  76. pause();
  77. }

Linuxc:创建与监控多个子进程的更多相关文章

  1. fork同一时候创建多个子进程的方法

    Fork同一时候创建多个子进程方法 第一种方法:验证通过 特点:同一时候创建多个子进程.每一个子进程能够运行不同的任务,程序 可读性较好,便于分析,易扩展为多个子进程 int main(void) { ...

  2. Linux之创建多个子进程

    /*** fork_test.c ***/ #include<stdio.h> #include<stdlib.h> #include<unistd.h> int ...

  3. Linux下性能监控、守护进程与计划任务管理

    目录 一:监视系统进程(ps .top) 二:查看网络连接信息 (netstat) 三:文件进程.端口关联(lsof) 四:计划任务管理(at .crontab) at crontab 一:监视系统进 ...

  4. PHP多进程学习(二)__fork起多个子进程,父进程的阻塞与非阻塞

    先简单来了解一下多进程 [来初步了解一下PHP多进程及简单demo] php的多进程是不是可以无限制的fork子进程?fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的 ...

  5. Linux 下监控用户最大进程数参数(nproc)是否到达上限

    Linux 下监控用户最大进程数参数(nproc)是否到达上限的步骤: 1.查看各系统用户的进程(LWP)数: 注意:默认情况下采用 ps 命令并不能显示出所有的进程.因为 Linux 环境下执行多线 ...

  6. 创建属于其他Session的进程

    创建其他Session(User)的进程需要拿到对应Session的Token作为CreateProcessAsUser的参数来启动进程. 修改有System权限的Token的TokenId为其他Se ...

  7. 用monit监控系统关键进程

    原地址: https://feilong.me/2011/02/monitor-core-processes-with-monit monit是一款功能强大的系统状态.进程.文件.目录和设备的监控软件 ...

  8. 一个用pyton写的监控服务端进程的软件hcm

    使用udp实现,简单,方便,不用三次握手 1. 所有部署服务器进程的机器有一个代理进程hagent,用来监听hcm console中发送过来的命令 2.hcm需要提供以下命令 start :普通方式启 ...

  9. 怎么查看一个进程里fork多少个子进程

    怎么查看一个进程里fork多少个子进程 怎么查看一个进程里fork多少个子进程 怎么查看一个进程里fork多少个子进程 ? ? ?

随机推荐

  1. discuz个人空间主题列表 图片模式实现方法

    discuz X3空间主题列表 图片展现模式,discuz实现个人空间主题列表调用图片模式,discuz home图片列表 如果需要实现该呈现方式,我们需要首先了解discuz封面图片存储原理:dis ...

  2. mongodb university week4

    1.index Creation,background 如果在foreground运行index,会阻塞其他writer,如果background运行,会比较慢,但不会阻塞其他writer,可以并发写 ...

  3. Fedora 24最新工作站版本之四大重要改进

    导读 2014年,Fedora.next倡议正式开始建立Fedora Linux未来十年的发展规划.从本质上讲,这项规划旨在进一步使Fedora不再只是一套汇聚多种开源产品的通用库(例如Debian) ...

  4. JS对于数据常见操作

    var _mozi=['墨家','墨子','墨翟','兼爱非攻','尚同尚贤']; $.each(_mozi,function(key,val){//先key 后值 循环 console.log(ke ...

  5. Laravel5.1-错误和日志

    简介 这一章也是属于文档写得比较混乱的一章,所以我决定重新组织一下内容结构: 配置 debug配置 我们都知道,开发环境应该把debug打开,生产环境应该把debug关闭:这个设置在config/ap ...

  6. 2 DelayInterval延时间隔类——Live555源码阅读(一)基本组件类

    这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 这里是时间相关类的第二个部分. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnb ...

  7. 交叉编译alsa声卡驱动

    變異成靜態 ./configure --target=arm-linux --enable-shared=no --enable-static=yes 編譯成動態 ./configure --targ ...

  8. centos6.5 网卡的处理

    在centos安装后,找不到eth0/1 看了下dmesg | grep network的输出,发现不是驱动没有安装,而是重新命名了网卡. 1. 配置静态IP,修改 /etc/sysconfig/ne ...

  9. phpcms常用方法简介

    function thumb() /** * 生成缩略图函数 * @param $imgurl 图片路径 * @param $width 缩略图宽度 * @param $height 缩略图高度 * ...

  10. 【Networking】k8s容器网络 && golang相关

    Bookmarks flannel/proxy.c at master · coreos/flannel kubernetes/kubernetes: Production-Grade Contain ...