编写器使用IPC

时间:2017-09-21 22:47:52

标签: c named-pipes

我有两个进程p0,p1并行运行。我使用命名管道IPC,其中读取器(p0)写入管道,读取器(p1)从中读取。在这里,读者在作家之前开始。读者必须循环,直到写入器写入管道并且数据可供读取。

在writer.c中

int fd;
char * myfifo = "/tmp/myfifo";
char string1[20] = "Hello";
mkfifo(myfifo, 0666);
fd = open(myfifo, O_WRONLY);
write(fd, string, sizeof(string1);
close(fd);

在reader.c中,我使用

# define MAX_BUF 20
int fd;
char buf[MAX_BUF];
while(1){
        fd = open(myfifo, O_RDONLY);
        read(fd, buf, MAX_BUF);
        printf("Received: %s\n", buf);
        if(strlen(buf) != 0){ // buf is not empty, so break from the loop
            break;
        }
        close(fd);
    }

执行此代码时,编写器会阻塞。我在这里缺少什么?

谢谢, ķ

0 个答案:

没有答案