在看Android 输入系统的时候,第一次看到socketpair,发现和管道非常相似。唯他们的区别就是socketpair,默认支持全双工,而pipe是半双工的。他们一样只能用在父子进程或者线程之间通信。
下面分别以socketpair和管道实现全双工通信。
管道实现线程间全双工通信
代码语言:javascript复制#include<stdio.h>
#include<pthread.h>
#include<string.h>
#include<stdlib.h>
#include<unistd.h>
#define SIZE 1024
int fd1[2],fd2[2]; //fd1[0]:read, fd1[1]:write
void *func_thread1(void *arg)
{
char buf[SIZE] = {0};
int cnt = 0;
while(1)
{
sprintf(buf,"hello main %dn",cnt );
write(fd1[1],buf,strlen(buf));
int len = read(fd2[0],buf,SIZE);
buf[len] = '