*前言

了解fork()函数 

一个进程调用fork()函数创建该进程子进程,系统会为该子进程分配资源存储数据和代码的空间,父进程将数据和代码复制给子进程,子进程按父进程代码重新执行,即克隆了父进程并重新执行。

fork()函数的返回值,-1即fork失败,值为0时即子进程,返回值大于0即子进程id;

c代码样例:

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

int main(int arg,char* argv[]){

   // int 被 typedef为 pid_t
   pid_t pid=fork();

   // 当pid==0时,是子进程代码运行区域。其他则是父进程运行区域。
   if(pid<0){
	   printf("Create child process failure ...\n");

   }else if(pid==0){
	   //子进程执行体
	  printf("Hi i am child process ,my processId is %i \n",getpid());
   }
   else{
	   //父进程执行体
	   printf("parent process is run ,myid is %i \n",getpid());
   }


   // 执行体结束标志
   if(pid==0)
   {
	  printf("pid=%i child process end ... \n",getpid());
   }
   else{
	   // 睡眠5s,等待子先进程结束
	   sleep(5);
	   printf("pid=%i Parent process End ... \n",getpid());
   }

	return 0;
}

运行结果:

           

  

Logo

更多推荐