生产者进程
/*************************************************************************
> File Name: named_pipe_w.c
> Author: XXDK
> Email: v.manstein@qq.com
> Created Time: Thu 16 Mar 2017 10:51:22 PM PDT
************************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/stat.h>
#include<errno.h>
int main()
{
int ret;
int fd;
if((ret = mkfifo("./fifo", 0666)) != 0) {
if(errno == EEXIST) {
puts("fifo exist\n");
}else {
perror("make fifo error");
}
}
// 阻塞在此处等待另一端的写打开
fd = open("./fifo", O_WRONLY);
write(fd, "xxdk", 4);
printf("write data ok\n");
exit(0);
}
消费者进程
/*************************************************************************
> File Name: named_pipe_r.c
> Author: XXDK
> Email: v.manstein@qq.com
> Created Time: Thu 16 Mar 2017 10:51:22 PM PDT
************************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/stat.h>
#include<errno.h>
int main()
{
int ret;
int fd;
char buf[10] = {0};
if((ret = mkfifo("./fifo", 0666)) != 0) {
if(errno == EEXIST) {
puts("fifo exist\n");
}else {
perror("make fifo error");
}
}
fd = open("./fifo", O_RDONLY);
read(fd, buf, 4);
printf("read data ok: %s\n", buf);
exit(0);
}