我有两个进程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);
}
执行此代码时,编写器会阻塞。我在这里缺少什么?
谢谢, ķ