当我研究了一些关于用 C 进行 unix 编程的知识时,我了解到在信号处理程序中应该避免无法重入的函数,但是如果我有类似的东西:
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;
}
}
myExit 在哪里
void myExit(int ret){
...DO STUFF...
close(fileFd);
exit(ret);
}
并且 fileFd 是一个全局变量,如果我没记错的话,这使得 myExit 成为不可重入的......但在信号处理程序中使用它仍然是一个问题,即使它会导致程序退出?谢谢,如果这是一个愚蠢的问题,任何帮助表示赞赏和抱歉。