操作系统中运用二叉树的知识理解Linux-C创建多个进程及反例的解析(●----●)

Hi,百无聊赖写blog。本文所涉及的所有内容是存在笔者没有发现的错误的,所以请以批判的角度阅读,希望高手留下珍贵的留言,于此感激不尽。

然后,这些是记录笔者个人对有关知识点的认知和理解,希望在recording的同时,能够提高我的英语词汇运用,也能够将自己对C语言的热爱,开源和分享的思想在社区传播。

Alright!Nonsense is over,let's get into the code world!

First:代码素材

#include
#include
#include
#include


void demo1();	//创建多个进程的反例
void demo2();	//利用完全二叉树创建两个子进程
void demo3();	//利用镜像的完全二叉树创建两个子进程


int main(){
  //demo1();
  //demo2();
  //demo3();
  return 0;
}

void demo1(){
  int i;
  for(i = 0;i < 2;i++){
    fork();
    printf("ppid = %d, pid = %d, i = %d \n",getppid(),getpid(),i);
  }
}

void demo2(){
  int i;
  pid_t pid;
  for(i = 0;i < 2; i++){
    pid = fork();
    if(pid == 0){
      break;
    }
  }
  if(i < 2){
    sleep(i);
    printf("i'm %d child,pid = %u\n",i,getpid());
  }
  else{
    sleep(i);
    printf("i'm %d parent,pid = %u\n",i,getpid());
  }
}

void demo3(){
  int i;
  pid_t pid;
  for(i = 0;i < 2; i++){
    pid = fork();
    if(pid != 0){
      break;
    }
  }
  if(i > 0){
    sleep(i);
    printf("i'm %d child,pid = %u\n",i,getpid());
  }
  else{
    sleep(i);
    printf("i'm %d parent,pid = %u\n",i,getpid());
  }
}

demo1函数分析:

 

代码:

void demo1();	//创建多个进程的反例


int main(){
  demo1();
  return 0;
}

void demo1(){
  int i;
  for(i = 0;i < 2;i++){
    fork();
    printf("ppid = %d, pid = %d, i = %d \n",getppid(),getpid(),i);
  }
  sleep(10);
}

运行结果:

操作系统中运用二叉树的知识理解Linux-C创建多个进程及反例的解析(●----●)_第1张图片

 

 

操作系统中运用二叉树的知识理解Linux-C创建多个进程及反例的解析(●----●)_第2张图片

 

demo2函数分析:

代码:

void demo2();	//利用完全二叉树创建两个子进程


int main(){
  //demo2();
  return 0;
}

void demo2(){
  int i;
  pid_t pid;
  for(i = 0;i < 2; i++){
    pid = fork();
    if(pid == 0){
      break;
    }
  }
  if(i < 2){
    sleep(i);
    printf("i'm %d child,pid = %u\n",i,getpid());
  }
  else{
    sleep(i);
    printf("i'm %d parent,pid = %u\n",i,getpid());
  }
}

运行结果:

操作系统中运用二叉树的知识理解Linux-C创建多个进程及反例的解析(●----●)_第3张图片

操作系统中运用二叉树的知识理解Linux-C创建多个进程及反例的解析(●----●)_第4张图片

demo3函数分析:

代码:

void demo3();	//利用镜像的完全二叉树创建两个子进程


int main(){
  //demo3();
  return 0;
}

void demo3(){
  int i;
  pid_t pid;
  for(i = 0;i < 2; i++){
    pid = fork();
    if(pid != 0){
      break;
    }
  }
  if(i > 0){
    sleep(i);
    printf("i'm %d child,pid = %u\n",i,getpid());
  }
  else{
    sleep(i);
    printf("i'm %d parent,pid = %u\n",i,getpid());
  }
}

运行结果:

操作系统中运用二叉树的知识理解Linux-C创建多个进程及反例的解析(●----●)_第5张图片

操作系统中运用二叉树的知识理解Linux-C创建多个进程及反例的解析(●----●)_第6张图片

你可能感兴趣的:(Linux,C语言,fork函数,进程)