Я пытаюсь использовать именованный канал для связи внутри процесса.
Вот код
#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;
}
Я хочу, чтобы основной блок блокировался, пока что-то не записано в канал.
Проблема в том, что обработчик сигнала sigint () также блокируется после открытия канала. Это должно произойти, учитывая, что канал уже открыт для чтения ранее в main ()?