Почему следующая программа не блокируется при втором read
вызове?
int pid = fork();
if(pid) {
int fifo = open("testfifo", O_RDWR);
char buf[20];
while(1) {
read(fifo, buf, 10);
puts(buf);
}
} else {
int fifo = open("testfifo", O_WRONLY);
write(fifo, "teststring", 10);
close(fifo);
}
return 0;
Второй read
вызов продолжает возвращаться 0
, даже если fifo становится пустым, и он должен блокироваться при вызове read
.
Я что-то упустил?
Операционная система Windows, и канал был создан с mknod testfifo p
.