[СИ] close и сигнал.
Язык СИ
ОС UNIX
Кусок кода:
start:
....
k=close(fd);
if(k<0) goto ERR; //--- close() может быть прерван SIGALRM ---
fd=-1;
....
goto start;
ERR:
alarm(0); // выключить сигнал
if(fd>=0) close(fd);
fd=-1;
goto start;
Т. к. процесс бесконечный, то файл обязательно нужно закрыть.
Я догадываюсь, что если close() обрамить масками сигнала, то было бы хорошо.
Сработает ли это повторное закрытие?
Или непременно маски сигнала в главной ветке?
Можно расширить вопрос. Если close возвращает ошибку, любую,
то как избавиться от файла?