linux下多任务简单实现

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>

#include <signal.h>
#include <sys/wait.h>

void start_routine();

void signal_handler(int signo){
    if(signo==SIGCHLD){
        pid_t pid;
        while((pid=waitpid(-1,NULL,WNOHANG))>0){
        }
    }
}

int main(){

    signal(SIGCHLD,signal_handler);

    int i;
    pid_t pid;
    for(i=0;i<3;i++){
        pid=fork();
        if(pid==0){
            start_routine();
            return 2;
        }
    }
    while(1);
    return 1;
}

void start_routine(){
    printf("-- %d <-- %d --\n",getpid(),getppid());
    return;
}

posted @ 2017-09-04 10:27  guanlongcun  阅读(451)  评论(0编辑  收藏  举报