fork()函数,Linux系统调用:
头文件包含:
#include<unistd.h>
函数定义:
int fork(void);
返回值:
子进程中返回0,父进程中返回子进程ID,出错返回-1
函数说明:
一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为进程(child process)。fork函数被调用一次但返回两次。两次返回的唯一区别是子进程中返回0值,而父进程中返回子进程ID。
子进程是父进程的副本,它将获得父进程的数据空间,堆栈等资源的副本。注意,子进程持有的是上述存储空间的“副本”,这意味着父子进程间不共享这些存储空间,它们之间共享的存储空间只有代码段。
程序代码:
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int main(void){
pid_t childpid;
childpid = fork();
if (childpid < 0 ){
printf("error in fork");
}
else if (childpid == 0){
printf("I am the child process,my process id is %d \n",getpid());
}
else{
printf("I am the parent process,my process id is %d \n",getpid());
}
}
运行结果是,先打印出父进程的pid,再打印出子进程的pid;