C语言linux多进程

fork()函数 

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

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

#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 failed ...\n");
 
   }else if(pid==0){
       //子进程执行体
      printf("Create child process successfully %i \n",getpid());
   }
   else{
       //父进程执行体
       printf("This is parent process %i \n",getpid());
   }
 
    
   // 执行体结束标志
   if(pid==0)
   {
       sleep(3);
      printf("pid=%i child process end ... \n",getpid());
   }
   else{
       // 睡眠5s,等待子先进程结束
    sleep(5);
       printf("pid=%i Parent process end ... \n",getpid());
   }

    return 0;
}
C_project$ gcc duojincheng1.c -o a 
C_project$ ./a 
This is parent process 4858 
Create child process successfully 4859 
pid=4859 child process end ... 
pid=4858 Parent process end ...

 

posted @ 2020-07-05 00:21  腹肌猿  阅读(601)  评论(0编辑  收藏  举报