#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<strings.h>
#include<signal.h>
#include<unistd.h>
#define FIFONAME1 "./fifo1.txt"
#define FIFONAME2 "./fifo2.txt"
void print_err(char *str) {
perror(str);
exit(-1);
}
int create_open_fifo(char *fifoname, int open_mode) {
int ret = -1;
int fd = -1;
ret = mkfifo(fifoname, 0664);
if (ret == -1 && errno != EEXIST) print_err("mkfifo failed");
fd = open(fifoname, open_mode);
if (fd == -1) print_err("open failed");
return fd;
}
void signal_fun(int signo) {
remove(FIFONAME1);
remove(FIFONAME2);
exit(-1);
}
int main() {
int ret = -1;
char buf[100] = {0};
int fd1 = -1;
int fd2 = -1;
fd1 = create_open_fifo(FIFONAME1, O_RDONLY);
fd2 = create_open_fifo(FIFONAME2, O_WRONLY);
ret = fork();
if (ret > 0) {
signal(SIGINT, signal_fun);
while(1) {
bzero(buf, sizeof(buf));
read(fd1, buf, sizeof(buf));
printf("recv: %s\n", buf);
}
} else if (ret == 0) {
while(1) {
bzero(buf, sizeof(buf));
scanf("input data:%s", buf);
write(fd2, buf, sizeof(buf));
}
}
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
#include<strings.h>
#include<signal.h>
#define FIFONAME1 "./fifo1.txt"
#define FIFONAME2 "./fifo2.txt"
void print_err(char *str) {
perror(str);
exit(-1);
}
int create_open_fifo(char *fifoname, int open_mode) {
int ret = -1;
int fd = -1;
ret = mkfifo(fifoname, 0664);
if (ret == -1 && errno != EEXIST) print_err("mkfifo failed");
fd = open(fifoname, open_mode);
if (fd == -1) print_err("open failed");
return fd;
}
void signal_fun(int signo) {
remove(FIFONAME1);
remove(FIFONAME2);
exit(-1);
}
int main() {
int ret = -1;
char buf[100] = {0};
int fd1 = -1;
int fd2 = -1;
fd1 = create_open_fifo(FIFONAME1, O_WRONLY);
fd2 = create_open_fifo(FIFONAME2, O_RDONLY);
ret = fork();
if (ret > 0) {
signal(SIGINT, signal_fun);
while(1) {
bzero(buf, sizeof(buf));
scanf("input data:%s", buf);
write(fd1, buf, sizeof(buf));
}
} else if (ret == 0) {
while (1){
bzero(buf, sizeof(buf));
read(fd2, buf, sizeof(buf));
printf("recv: %s\n", buf);
}
}
return 0;
}