zoukankan      html  css  js  c++  java
  • Linuxc:创建与监控多个子进程

    #include <unistd.h>
    #include <sys/types.h>
    #include <stdlib.h>
    #include <signal.h>
    #include <stdio.h>
    
    //子进程个数
    #define SUB_PRO_COUNT 10
    
    //处理子进程的退出信号
    void sub_quit_signal_handle(int sig);
    
    //父进程的事件循环
    void ParentCycle();
    
    //子进程的事件循环
    void ChildCycle();
    
    int main(void)
    {
        pid_t  pid;
        int i;
    
        //创建SUB_PRO_COUNT个子进程
        for(i=0; i<SUB_PRO_COUNT; i++)
        {
            pid = fork();
            if( 0 == pid || -1 == pid )
                break;
        }
    
        //创建子进程失败
        if( -1 == pid )
        {
            printf("No. %d: fork error
    ", i);
        }
        //子进程的事件循环
        else if( 0 == pid )
        {
            ChildCycle();
        }
        //父进程的事件循环
        else
        {
            ParentCycle();
        }
    
        return 0;
    }
    
    void sub_quit_signal_handle(int sig)
    {
        int status;
        //获取退出的那个子进程的状态
        int quit_pid = wait(&status);
        printf("sub process %d quit, exit status %d
    ", quit_pid, status);
    
        //新创建一个子进程
        pid_t pid = fork();
        if( 0 == pid )
             ChildCycle();
    }
    
    void ParentCycle()
    {
        printf("Parent process %d
    ", getpid());
        signal(SIGCHLD, sub_quit_signal_handle);
        while(1)
            pause();
    }
    
    void ChildCycle()
    {
        printf("create sub process id: %d, parent id: %d
    ", getpid(), getppid());
        while(1)
            pause();
    }
  • 相关阅读:
    汇付 支付,痛苦的接入过程
    路由集合中已存在名为“ XXXX” 的路由
    博客目录
    (转载)为什么使用APP Bundle
    安卓基础:后台任务
    安卓基础:应用权限
    安卓资源的使用 二
    kotlin学习三:lambda 和内联函数
    kotlin学习二:函数
    kotlin学习一:基础语法
  • 原文地址:https://www.cnblogs.com/aspirant/p/3602517.html
Copyright © 2011-2022 走看看