linux管道双工聊天

来源:互联网 发布:netbeans怎么编写java 编辑:程序博客网 时间:2024/05/11 16:51

A

#include "stdio.h"#include "pthread.h"#include "string.h"#include <fcntl.h>char fileout[20] = "fio.pipe";char fileint[20] = "fii.pipe";int r;int fd1;     int fd2;int p1=0;        int flag=0;     char putbuff[256];char getbuff[256];void thread(){while(1){ //发送printf("清输入:");scanf("%s",putbuff);write(fd1,putbuff,strlen(putbuff)+1);};}int main(){r = mkfifo(fileint,0666);r = mkfifo(fileout,0666);fd1 = open(fileout,O_RDWR);fd2 = open(fileint,O_RDWR);pthread_t th;pthread_create(&th,NULL,(void *)thread,NULL);//线程创建while(1){   r = read(fd2,getbuff,sizeof(getbuff)-1);                  if(r > 0){getbuff[r] = 0;printf("\n对方说:%s \n",getbuff);}}pthread(th,NULL);   //线程结束return 0;}

B

#include "stdio.h"#include "pthread.h"#include "string.h"#include <fcntl.h>char fileout[20] = "fio.pipe";char fileint[20] = "fii.pipe";int r;int fd1;     int fd2;int p1=0;        int flag=0;     char putbuff[256];char getbuff[256];void thread(){while(1){ //发送printf("清输入:");scanf("%s",putbuff);write(fd2,putbuff,strlen(putbuff)+1);};}int main(){r = mkfifo(fileint,0666);r = mkfifo(fileout,0666);fd1 = open(fileout,O_RDWR);fd2 = open(fileint,O_RDWR);pthread_t th;pthread_create(&th,NULL,(void *)thread,NULL);//线程创建while(1){   r = read(fd1,getbuff,sizeof(getbuff)-1);                  if(r > 0){getbuff[r] = 0;printf("\n对方说:%s \n",getbuff);}}pthread(th,NULL);   //线程结束return 0;}

0 0