linux——fork创建一个子进程的一般目的

文章详细阐述了父进程创建子进程的两个主要目的:一是为了复制自身以处理不同的服务请求,如在网络服务器中;二是执行不同的程序,例如在shell中。提供的代码示例演示了当接收到特定输入时如何通过fork创建子进程,并展示了子进程的不同pid。
摘要由CSDN通过智能技术生成

父进程创建子进程的目的:

        1、父进程希望复制自己,使父、子进程同时执行不同的代码段。这在网络服务进程中是常见的——父进程等待客户端的服务请求。当请求到达,父进程调用fork,使子进程处理此请求。父进程则继续等待下一个服务请求的到达。

                服务器—fork—客户端1

                           —fork—客户端2

                           —fork—客户端3

                           ……

        2、一个进程要执行一个不同的程序。这对shell是常见的情况。在这种情况下,子进程从fork返回后立即调用exec(调用另一个进程,看之后的博客)

客户端接入请求fork建立子进程,代码演示:

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>

int main()
{
	pid_t pid;
	int data=10;
	
	while(1){

		printf("please input a data\n");
		scanf("%d",&data);
		if(data==1){
			pid=fork();

        		if(pid>0){
        		}
        		if(pid==0){
				while(1){
        			printf("do net request,pid=%d\n",getpid());
				sleep(3);
				}
			}

		}
		else{
			printf("wait,do nothing\n");
		}

	}

	pid=fork();
	

	if(pid>0){
		printf("this is father print\n");
	}
	if(pid==0){
		printf("this is child print,pid=%d\n",getpid());
		data=data+100;
	}

	printf("data=%d\n",data);

	return 0;
}

代码演示结果:可以输入1来创建多个子进程,每个子进程的pid号都不同

please input a data
1
please input a data
do net request,pid=22291
do net request,pid=22291
2
wait,do nothing
please input a data
3
wait,do nothing
please input a data
4
wait,do nothing
please input a data
5
wait,do nothing
please input a data
do net request,pid=22291
3
wait,do nothing
please input a data
do net request,pid=22291
1
please input a data
do net request,pid=22294
do net request,pid=22291
do net request,pid=22294
do net request,pid=22291
do net request,pid=22294
do net request,pid=22291
1
please input a data
do net request,pid=22296
do net request,pid=22294
do net request,pid=22291
do net request,pid=22296
do net request,pid=22294
do net request,pid=22291

总结:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值