fork
create process
fork 被调用一次,可以返回两次。
在调用fork之后的代码会执行两次,一次在父进程中执行,返回的是创建成功的子进程的Id,一次是在子进程中执行,返回的是0;如果出现错误,fork返回的是负值。
 1/*linux下:*/
 2 
 3#include <stdio.h>
 4#include <unistd.h>
 5 
 6int main() {
 7    pid_t pid;
 8    pid = fork();
 9    if(pid  == 0) //返回子进程
10    {
11        printf("child pid: %d\n", getpid());
12    } else {
13        printf("pid: %d\n", pid);//父进程中返回子进程的pid
14        printf("father pid: %d\n", getpid());
15    }
16}
1pid: 2876921
2father pid: 2876920
3child pid: 2876921
fork的两种用法
- 
父进程希望复制自己,使父子进程同时执行不同的代码段。
比如在网络服务程序中,父进程等待客户端的服务请求。当请求到达时,父进程调用fork()使子进程处理此请求;而父进程继续等待下一个请求。
 - 
一个进程要执行不同的程序
这个在shell下比较常见,这种情况下, fork()之后一般立即接exec函数。