Linux进程之Fork函数

Fork()函数

1.所需头文件:

#include <unistd.h>

#include<sys/types.h>

2.函数定义

pid_t fork( void );

pid_t 是一个宏定义,其实质是int 被定义在#include<sys/types.h>中

返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;

        否则,出错返回-1

3.函数说明:

 一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程(child process)。fork函数被调用一次但返回两次。两次返回的唯一区别是子进程中返回0值而父进程中返回子进程ID。

子进程是父进程的副本,它将获得父进程数据空间、堆、栈等资源的副本。父子进程间共享的存储空间只有代码段。

 

 4.代码

 

  1. #include<sys/types.h> 
  2. #include<unistd.h> 
  3. #include<stdio.h> 
  4. #include<stdlib.h> 
  5. #include<errno.h> 
  6.  
  7. int main() 
  8.    
  9.   pid_t pid;/*pid 进程id号*/ 
  10.    
  11.   pid=fork();/*创建一个新进程*/ 
  12.  
  13.   if(pid==0) /*返回0为子进程*/ 
  14.   { 
  15.    printf("Return pid is %d\n",pid); 
  16.    printf("This is son process!  pid is:%d\n",getpid()); 
  17.       
  18.   } 
  19.   else if(pid>0)/*返回大于0为父进程*/ 
  20.   { 
  21.     printf("Return pid is %d\n",pid); 
  22.     printf("This is parent process!  pid is:%d\n",getpid()); 
  23.      waitpid(pid,NULL,0);/*等待子进程退出*/
  24.   } 
  25.   else 
  26.   { 
  27.      perror("fork() error!"); 
  28.      exit; 
  29.   } 

 5.输出

技术分享

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。