pipe 半双工_进程通信:管道(pipe)和 unix域套接字(socketpair)区别

本文对比了Unix系统中管道pipe和Unix域套接字socketpair在实现全双工通信时的区别。pipe是半双工的,需要两次操作实现全双工,而socketpair直接支持全双工通信。通过示例代码展示了两者在父子进程间通信的应用。
摘要由CSDN通过智能技术生成

[UNIX/Linux进程间通信入门(1):管道]

管道pipe是半双工的,pipe两次才能实现全双工,使得代码复杂。socketpair直接就可以实现全双工

socketpair对两个文件描述符中的任何一个都可读和可写,而pipe是一个读,一个写

详间代码:

一:pipe实现父子进程全双工通信:

[cpp]

view plain

copy

#include 

#include 

int main ()

{

int fd1[2],fd2[2];

pipe(fd1);

pipe(fd2);

if ( fork() ) {

/* Parent process: echo client */

int val = 0;

close( fd1[0] );

close(fd2[1]);

while ( 1 ) {

sleep( 1 );

++val;

printf( "parent Sending data: %d\n", val );

write( fd1[1], &val, sizeof(val) );

read( fd2[0], &val, sizeof(val) );

printf( "parent Data received: %d\n", val );

}

}

else {

/* Child process: echo se

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值