一个父进程希望复制自己,使父、子进程执行不同的代码段。
- 一般应用于网络服务进程中:
父进程等待客户端的服务请求,当这种请求到达时,父进程调用fork函数,使子进程处理此请求,父进程继续等待下一个服务请求到达。
通俗的讲就是相当于腾讯qq的服务器等待每个用户的qq客户端APP的服务请求,当有人登陆qq后,服务器主程序会分一个子进程去处理这个客户端的服务请求,而服务器主程序会继续等待下一客户端的服务请求。
示例代码
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
pid_t pid;
int a;
while(1){
printf("please input a data:\n");
scanf("%d",&a);
if(a == 1){
pid = fork();
if(pid > 0){
printf("this is father print pid:%d\n",getpid());
}else if(pid == 0){
while(1){
printf("this is child print ,child pid:%d\n",getpid());
sleep(3);
}
}
}else{
printf("wait....! do nothing\n");
}
}
return 0;
}
外部父进程一直检测输入,等待匹配的值,当值匹配时则创建子进程,做一些需要操作的处理请求