#include <head.h>
void* t_r(void* arg)
{
while (1) {
char buf[128];
ssize_t res = 0;
// 接收**************************************//
bzero(buf, sizeof(buf)); // buf清零
res = read(*(int*)arg, buf, sizeof(buf));
if (res < 0) {
perror("read");
return NULL;
} else if (res == 0) {
puts("A端写关闭,结束");
break;
}
printf("B:%s\n", buf);
//*****************************************//
}
pthread_exit(NULL);
}
int main(int argc, const char* argv[])
{
// 创建有名管道文件
if (mkfifo("fifo1", 0666) < 0)
if (errno != 17)
PRINT_ERR("mkfifo");
if (mkfifo("fifo2", 0666) < 0)
if (errno != 17)
PRINT_ERR("mkfifo");
// 打开管道文件
int fd1;
if ((fd1 = open("fifo1", O_WRONLY)) < 0)
PRINT_ERR("open1");
int fd2;
if ((fd2 = open("fifo2", O_RDONLY)) < 0)
PRINT_ERR("ropen2");
// 创建线程
pthread_t t1;
if (0 != pthread_create(&t1, NULL, t_r, (void*)&fd2))
return -1;
while (1) {
char buf[128];
// 发送**************************************//
bzero(buf, sizeof(buf)); // buf清零
fgets(buf, sizeof(buf), stdin); // 终端输入
buf[strlen(buf) - 1] = 0;
if (strcmp(buf, "quit") == 0) {
close(fd1);
break;
}
if (write(fd1, buf, sizeof(buf)) < 0) // 把buf写入到管道文件
PRINT_ERR("write");
//*****************************************//
}
pthread_join(t1, NULL);
close(fd2);
return 0;
}
#include <head.h>
void* t_w(void* arg)
{
}
void* t_r(void* arg)
{
while (1) {
char buf[128];
ssize_t res = 0;
// 接收**************************************//
bzero(buf, sizeof(buf)); // buf清零
res = read(*(int*)arg, buf, sizeof(buf));
if (res < 0) {
perror("read");
return NULL;
} else if (res == 0) {
puts("A端写关闭,结束");
break;
}
printf("A:%s\n", buf);
//*****************************************//
}
pthread_exit(NULL);
}
int main(int argc, const char* argv[])
{
// 创建有名管道文件
if (mkfifo("fifo1", 0666) < 0)
if (errno != 17)
PRINT_ERR("mkfifo");
if (mkfifo("fifo2", 0666) < 0)
if (errno != 17)
PRINT_ERR("mkfifo");
// 打开管道文件
int fd1;
if ((fd1 = open("fifo1", O_RDONLY)) < 0)
PRINT_ERR("open1");
int fd2;
if ((fd2 = open("fifo2", O_WRONLY)) < 0)
PRINT_ERR("ropen2");
// 创建线程
pthread_t t1;
if (0 != pthread_create(&t1, NULL, t_r, (void*)&fd1))
return -1;
while (1) {
char buf[128];
// 发送**************************************//
bzero(buf, sizeof(buf)); // buf清零
fgets(buf, sizeof(buf), stdin); // 终端输入
buf[strlen(buf) - 1] = 0;
if (strcmp(buf, "quit") == 0) {
close(fd2);
break;
}
if (write(fd2, buf, sizeof(buf)) < 0) // 把buf写入到管道文件
PRINT_ERR("write");
//*****************************************//
}
pthread_join(t1, NULL);
close(fd1);
return 0;
}