fork创建的新进程被称为子进程。fork函数被调用一次,但返回两次。两次返回的唯一区别是子进程的返回值是0,而父进程的返回值则是新子进程的进程ID号。将子进程ID返回给父进程的理由是:因为一个进程的子进程可以有多个,并且没有一个函数使一个进程可以获得所以子进程的进程ID。fork使子进程得到返回值0的原因是:一个进程只会有一个父进程,所以子进程总是可以调用getppid以获得其父进程的进程ID(即0被交换进程占用,所以0不可以是子进程的ID号)
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
pid_t pid;
int data;
while(1){
printf("please input a data\n");
scanf("%d",&data);
if(data == 1){
pid = fork();
if(pid > 0){
}else if(pid == 0){
while(1){
printf("connect to net requst = %d\n",getpid());
sleep(2);
}
}
}
else{
printf("wait,do nothing\n");
}
}
return 0;
}
fork创建一个子进程的一般目的
1、一个父进程希望复制自己,使父、子进程同时执行不同的代码段。这在网络服务进程中是常见的——父进程等待客户端的服务请求。当这种请求当这种请求达到时,父进程调用fork,使子进程处理此请求。父进程则等待下一个服务请求到达。