fork函数通过系统调用创建一个与原来进程相同的进程。
fork一次调用返回两次:
一次是在调用进程返回,返回值为新进程的pid;
一次是在新创建的进程返回,返回值为0。
看程序:
[root@xjbpc c]# cat fork.c
#include <unistd.h>
#include <stdio.h>
int main() {
printf("getpid:%d\n", getpid());
int pid = fork();
printf("getpid:%d, fork_return:%d\n", getpid(), pid);
return 0;
}
[root@xjbpc c]# gcc fork.c
[root@xjbpc c]# ./a.out
getpid:5729
getpid:5729, fork_return:5730
getpid:5730, fork_return:0
#程序说明:原进程pid为5729。调用fork后系统创建一个新进程,新进程pid为5730。在原进程中fork返回值为新进程pid5730,在新进程中fork返回值为0。
# 所以通过判断fork返回值,就可以让两个进程执行不同的代码(用if else结构)。
所以通过判断fork返回值,就可以让程序在调用进程和新创进程中执行不同的功能。