Изучая кое-что о программировании Unix с помощью C, я узнал, что внутри обработчика сигналов следует избегать функций, которые не могут быть реентерабельными, но если у меня есть что-то вроде:
int main(int argc, char** argv){
...
fileFd=open(...)
signal(SIGUSR1, signalHandler)
...
}
void signalHandler(int signo){
switch(signo){
case SIGUSR1:
myExit(EXIT_FAILURE);
break;
default:
break;
}
}
Где мой выход
void myExit(int ret){
...DO STUFF...
close(fileFd);
exit(ret);
}
а fileFd - глобальная переменная, и, если я правильно помню, это делает myExit нереентерабельным... но все еще проблема использовать ее в обработчике сигналов, даже если это вызовет выход из программы? Спасибо, любая помощь приветствуется и извините, если это глупый вопрос.