, 내가 배운 그 재진입이 신호 처리기 내부에 피해야 할 실패,하지만 난 뭔가를 한 경우 기능 :전역 변수를 사용하지만 exit를 사용하는 함수는 여전히 신호 처리기에서 피해야합니다. 나는 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;
}
}
이 myExit이
인 경우void myExit(int ret){
...DO STUFF...
close(fileFd);
exit(ret);
}
및 fileFd는 전역 변수이며, 내가 제대로 기억한다면 그 myExit 비 재진입의 수 ...하지만 여전히 그것은 출구가 발생할 경우에도 신호 처리기에서 사용하는 문제입니다 프로그램? 바보 같은 질문이라면 어떤 도움을 주시면 감사하겠습니다.
재진입에 관한 것이 아니라 비동기 안전성에 관한 것입니다. 나가는 것이 좋을 것입니다. –
논리적으로 그렇지 않습니다. 프로그램이 종료되면 종료 후에도 걱정할 필요가 없습니다. * "종료 후"가 없기 때문입니다. * –