Я пытаюсь написать 2 серверные / клиентские программы под Linux, в которых они общаются через именованные каналы. Проблема в том, что иногда, когда я пытаюсь записать с сервера канал, который больше не существует (клиент остановился), я получаю ошибку «Ресурс временно недоступен», и сервер полностью останавливается.
Я понимаю, что это вызвано использованием параметра O_NONBLOCK при открытии канала fifo, указывающего точку, в которой программа обычно ожидает, пока она не сможет снова записать в файл, но есть ли способ остановить это поведение остановить всю программу, если возникнет проблема (не должна ли команда записи вернуть -1 и программа продолжит нормально)?
И еще одна странная вещь: эта ошибка возникает только при запуске программ вне ide (eclipse). Если я запускаю обе программы в eclipse, при ошибке функция записи просто возвращает -1, и программы продолжаются нормально.