Ich versuche, eine benannte Pipe für die Kommunikation innerhalb eines Prozesses zu verwenden. Hier ist der Code
#include <stdio.h>
#include <fcntl.h>
#include <signal.h>
void sigint(int num)
{
int fd = open("np", O_WRONLY);
write(fd, "y", 1);
close(fd);
}
main()
{
char ch[1];
int fd;
mkfifo("np", 0666);
signal(SIGINT, sigint);
fd = open("np", O_RDONLY);
read(fd, ch, 1);
close(fd);
printf("%c\n", ch[0]);
return;
}
Was ich will, ist, dass main blockiert, bis etwas in die Pipe geschrieben wird. Das Problem ist, dass der Signalhandler sigint() nach dem Öffnen der Pipe ebenfalls blockiert. Soll dies geschehen, da die Pipe bereits zuvor in main() zum Lesen geöffnet wurde?