Linux教程

Linux分别以链式结构和扇形结构实现10个子进程的创建

本文主要是介绍Linux分别以链式结构和扇形结构实现10个子进程的创建,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、链式结构实现10个子进程的创建

进程链:父进程fork生成子进程,再由子进程fork派生出孙子进程。
vim chain.c

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

int main(){
        int i;
        int n = 10;
        pid_t pid;  //创建一个进程,给它一个pid
        for(i = 0;i < n;i++)  //循环创建
        {
                pid = fork();  //该进程作为父进程fork出子进程
                if (pid < 0){  //出错,pid < 0
                        perror("fork error");
                        exit(1);  //退出程序
                } else if (pid > 0) {   //父进程pid > 0
                        break;  //父进程退出循环,子进程继续循环
                }
        }
                printf("pid = %d, ppid = %d\n", getpid(), getppid());
                sleep(1);  //等待,给进程创建反应时间
}

如下图,由一个进程,循环创建出10个进程
在这里插入图片描述

二、扇形结构实现10个子进程的创建

进程扇:由一个父进程派生出多个子进程
vim fan.c

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(){
        int i;
        int n = 10;
        pid_t pid;   //创建一个进程,给它一个pid

        for (i = 0;i < n;i++){
                pid = fork();   //在循环里fork,由一个父进程fork出多个子进程

                if (pid < 0){
                        printf("fork error");
                } else if (pid == 0) {   //如果当前pid==0说明是子进程,跳出循环
,父进程继续参与创建
                        break;
                }
        }
        printf("my pid is %ld,My parent pid is %ld\n",(long)getpid(),(long)getppid());
        sleep(1);
}

运行结果如下:同一个父进程创建了10个子进程
在这里插入图片描述

这篇关于Linux分别以链式结构和扇形结构实现10个子进程的创建的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!