Как мне ждать EPIPE для Linux и Unix? - PullRequest
0 голосов
/ 08 октября 2011

Я пишу программу для Linux на C, и я хотел бы подождать (используя select или poll ), чтобы дескриптор файла канала сломался, например, Я бы хотел дождаться момента, когда последующая запись (2) вернет EPIPE (или будет отправлен SIGPIPE). Добавление файлового дескриптора к аргументу writefds или исключениемfds для select не решает проблему. Я знаю, что могу решить эту проблему путем создания нескольких процессов или потоков, но в этом вопросе меня интересуют только однопроцессные однопоточные решения, предпочтительно включающие select и poll (потому что я хочу ждать и других событий файлового дескриптора). Я не могу предположить, кто находится на другом конце канала - решение должно работать, если эти процессы находятся далеко в дереве процессов.

Я бы предпочел решение, которое переносимо во многих системах Unix (не только в Linux).

1 Ответ

0 голосов
/ 08 октября 2011

Вызов опроса (2) с POLLHUP на конце записи канала, похоже, добился цели в Linux.

...