微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

运行并发子进程

如何解决运行并发子进程

我正在尝试制作 3 种进程(1 proc1、4 proc2 和 5 proc3)并使它们同时运行。我写了一些代码,但似乎没有重叠,即使使用 sleep() 函数,即进程总是以相同的顺序运行。我想知道这是否是创建多个进程的正确方法

int main() {
    setbuf(stdout,NULL);
    setbuf(stderr,NULL);
    
    int pid;

    pid = fork();
    if(pid < 0) {
        fprintf(stderr,"Fork error.");
        exit(2);
    } else if(pid == 0){ //Child
        proc1();
        exit(0);
    } else { //Parent
        for(int i=0; i<4; i++) {
            int child2ID = fork();
            if(child2ID == 0) {
                proc2();
                exit(0);
            }
        }
        for(int i=0; i<5; i++) {
            int child3ID = fork();
            if(child3ID == 0) {
                proc3();
                exit(0);
            }
        }
    }

    while(wait(NULL)) {
        if(errno == ECHILD)
            break;
    }

    return 0;
}

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