[СИ] Убойный SIGPIPE.
Язык СИ
ОС UNIX
Опасна ли такая конструкция (код урезан, но главное осталось):
int get()
{
signal(SIGPIPE, SIG_IGN);
sd=make_sd(); //--- создает приконнекченный TCP-сокет ---
k=write(sd);
if(k < 0) goto RET;
k=read(sd);
RET:
close(sd);
signal(SIGPIPE, SIG_DFL);
return();
}
Руководитель потребовал, чтобы при возврате из функции
установить исходную, т. е. дефолтную реакцию на SIGPIPE.
Но при этом должны действовать какие-нибудь другие SIGPIPE,
но только не тот, который от этого сокета.
Опасно ли?
Первое, что приходит в голову - да, опасно.
Сигнал распространяется не мгновенно, и придет после
установки SIG_DFL.
Так ли это?
Если да, то как поступить?
Кто знает прошу ответить.