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();
    }
  • 相关阅读:
    jQuery 选择器
    DOM 文档对象模型+倒计时
    javascript简单写出国际象棋棋盘
    javascript循环语句及函数
    JAVASCRIPT基础
    用纯CSS做的图片切换
    项目练习总结
    用CSS做的简单弹窗
    CSS布局元素
    jQuery属性/CSS使用例子
  • 原文地址:https://www.cnblogs.com/aspirant/p/3602517.html
Copyright © 2011-2022 走看看