Witam
Poznając łącza FIFO doczytałem, że funkcja open() będzie blokowana, dopóki inny program nie otworzy kolejki do zapisu (czyli w sposób komplementarny). Jednak w moim programie tak się nie dzieje. Program kończy swe działanie nie czekając na nadejście wiadomości, czy nawet otwarcie kolejki przez inny program. Dlaczego tak się dzieje?
#include<stdio.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<string.h>
#define MAX_N 251
void read_from_fifo(int descriptor)
{
char message[MAX_N];
if(read(descriptor,message,sizeof(message))<0)
perror("read");
printf("Nadawca: %s\n",message);
}
int main(void)
{
int descriptor;
if(mknod("fifo",0600, 0)<0)
perror("mknod");
descriptor = open("fifo",O_RDONLY);
if(descriptor<0)
perror("open");
read_from_fifo(descriptor);
if(close(descriptor)<0)
perror("close");
if(unlink("fifo")<0)
perror("unlink");
return 0;
}