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を再入不可にすることを正しく覚えていれば...しかし、それがプログラムの終了を引き起こしたとしても、シグナルハンドラーでそれを使用することはまだ問題ですか? ありがとう、それがばかげた質問であるならば、どんな助けでも感謝します。