#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <math.h>
#include <time.h>
#include <dirent.h>
#include <sys/wait.h>
#include <pthread.h>
#include <semaphore.h>
void *chat(void *arg)
{int fd;
if((fd=open("./myfifo",O_WRONLY))==-1)
{perror("open error");
return NULL;
}
while(1)
{char buf[128]="";
fgets(buf,sizeof(buf),stdin);
buf[strlen(buf)-1]='\0';
write(fd,buf,strlen(buf));
if(strcmp(buf,"quit")==0)
{break;
}}
close(fd);
pthread_exit(NULL);
}
int main(int argc, const char *argv[])
{pthread_t tid;
if(pthread_create(&tid,NULL,chat,NULL))
{perror("create error");
return -1;
}
int fd1;
if((fd1=open("./myfifo1",O_RDONLY))==-1)
{perror("open error");
return -1;
}
while(1){
char buf1[128]="";
read(fd1,buf1,sizeof(buf1));
if(strcmp(buf1,"quit")==0)
{break;
}
printf("对方说:%s\n",buf1);
}
close(fd1);
pthread_join(tid,NULL);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <math.h>
#include <time.h>
#include <dirent.h>
#include <sys/wait.h>
#include <pthread.h>
#include <semaphore.h>
void *chat(void *arg)
{int fd;
if((fd=open("./myfifo",O_RDONLY))==-1)
{perror("open error");
return NULL;
}
while(1)
{
char buf[128]="";
//定义数据容器
read(fd,buf,sizeof(buf));
if(strcmp(buf,"quit")==0)
{break;
}
printf("对方说:%s\n",buf);
}
pthread_exit(NULL);
close(fd);
}
int main(int argc, const char *argv[])
{
int fd1;
pthread_t tid;
if(pthread_create(&tid,NULL,chat,NULL))
{perror("create errror");
return -1;
}
if((fd1=open("./myfifo1",O_WRONLY))==-1)
{perror("open error");
return -1;
}
while(1)
{
char buf1[128]="";
//定义数据容器
fgets(buf1,sizeof(buf1),stdin);
buf1[strlen(buf1)-1]='\0';
write(fd1,buf1,strlen(buf1));
if(strcmp(buf1,"quit")==0)
{break;
}
}
close(fd1);
pthread_join(tid,NULL);
return 0;
}