Linux C 管道通信(完整代码)

                                              利用管道实现一个服务端进程与两个客户端进程间的通信

利用linux C编写两个C语言程序

 

 

详细代码点击此链接

https://download.csdn.net/download/m0_52857070/19007426

编写服务程序

第一步,在main函数中使用fork函数创建一个子进程,在子进程(pid==0)调用choose函数来选择与那个客户端通信,输入1选择客户端1,输入2选择客户端2,然后转到对应的子函数处。

else if(pid==0){
		printf("请输入0启动程序\n");
		scanf("%d",&cho);
		if(cho==0){
			printf("打开客户端1时输入1可打开客户端1!\n打开客户端2时输入2可打开客户端2!\n输入menu可选择客户端!\n");
			choose();
		}

  //选择要发送给那个客户端,并创建私有管道(写管道)
void choose()                  
{
	int cho;
	printf("请输入想要发送的客户端号\n");
	scanf("%d",&cho);
	if(cho==1){
		c1();     //选择与客户端1通信,转到C1()函数处
	}
	if(cho==2){
		c2();     //选择与客户端2通信,转到C2()函数处
	}
}

 

第二步,如果选择的是客户端1,在子函数中先打开一个名为FIFO_1的命名管道(作为私有管道),没有就创建。写入服务端要通过私有管道发送给客户端的信息。如果选择的是客户端2,在子函数中先打开一个名为FIFO_2的命名管道(作为私有管道),没有就创建。写入服务端要通过私有管道发送给客户端的信息。

第三步,在父进程(pid>0)中创建一个名为FIFO_P的命名管道(公有管道),没有就创建。从里面读取客户端发送过来的信息。

编写客户程序

第一步,在main函数中选择那一个客户端与服务端通信,然后转到对应的子函数。

if(cho==1)
	{
		//执行客户端1 
		c1();

        }
	
if(cho==2)
	{
		//执行客户端2 
		c2();
        }
	

第二步,如果选择的是客户端1,在子函数中打开两个命名管道,没有就创建,一个作为私有管道(FIFO_1),一个作为公有管道(FIFO_P),然后使用fork函数创建一个子进程,在子进程中读取从私有管道中发送过来的信息。在父进程中将要发送给服务端的信息写入公有管道。

如果选择的是客户端2,在子函数中打开两个命名管道,没有就创建,一个作为私有管道(FIFO_2),一个作为公有管道(FIFO_P),然后使用fork函数创建一个子进程,在子进程中读取从私有管道中发送过来的信息。在父进程中将要发送给服务端的信息写入公有管道。

执行结果

运行

 

serve.c服务程序

运行客户程序

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值