Я пытаюсь написать простой демон в Linux, который создаст FIFO, затем соберет все, что записано в FIFO, и запишет эти данные в файл позднее.
Я ожидаю, чтокак только мой демон создал FIFO, я могу сделать «echo text> / myfifo» несколько раз.Когда я закончу, я могу сделать «echo quit> / myfifo», и моя программа завершит работу и запишет все данные на диск.
В настоящее время я использую poll (), чтобы узнать, когда на диске больше данных.FIFO.Это работает нормально, пока после первого раза я не отправлю данные в FIFO.Данные выводятся нормально, но мой опрос непрерывно возвращает SIGHUP после этого.
Нужно ли переустанавливать (или закрывать и открывать) FIFO после каждой записи в него процесса?
Псевдокодмоего кода выглядит так:
ret = fifo(my_fifo, mode);
fd = open(my_fifo, O_RDONLY | O_NONBLOCK);
polling.fd = fd;
polling.events = POLLIN | POLLPRI;
do {
ret = poll(&polling, 1, -1);
amt = read(fd, buf, bufsize);
// do stuff
} while (!done);