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函数。