차이점이 있나요?
int on_exit(void (*function)(int , void *), void *arg);
와
int atexit(void (*function)(void));
에서 사용하는 함수가 종료 상태를 가져온다는 사실 외에 다른 점이 있나요?
즉, 종료 상태에 신경 쓰지 않는다면 둘 중 하나를 사용해야 할 이유가 있습니까?
편집: 많은 답변에서 on_exit
는 비표준이기 때문에 사용하지 말라고 경고했습니다. 회사 내부용으로 특정 구성에서 실행되도록 보장된 앱을 개발하는 경우 이 문제를 걱정해야 하나요?
마치 인컨텍스트 구조 () '또는' on_exit 사용해야 할 수 있도록 프로그램에 종료 코드를 doesn& # 39, t 일이 아니다. 마지막 것은 결코 있을 수 있는 '뒤집기' 를 통해 주요 기능은 노드전역 exited_cleanly 가변적입니다 진정한. 함수 () ',' 아테스트 등록할 수 있는 방법을 결정할 수 있는 이 변수를 체크 프로그램을 종료되었습니다. 이 두 가지 상태, 하지만 난 약간만이라도 충분하나니 제공하십시오 그칠 것으로 대부분의 합니다. 이 유형의 구성표가 더 많이 지원할 수 있도록 필요한 경우 종료 상태 확장하십시오 수도 있습니다.
@Nathan
먼저 종료 상태를 확인하는 다른 API 호출이 있는지 확인합니다... 언뜻 보기에는 보이지 않지만 표준 C API에 정통하지 않습니다.
쉬운 대안은 종료 상태를 저장하는 전역 변수를 만드는 것입니다... 기본값은 알 수 없는 오류 원인입니다(프로그램이 비정상적으로 종료되는 경우). 그런 다음 exit를 호출할 때 전역에 종료 상태를 저장하고 모든 종료 함수에서 이를 검색할 수 있습니다. 이 방법은 모든 종료 호출 전에 종료 상태를 부지런히 저장해야 하므로 이상적이지는 않지만, API가 없고 플랫폼에 'on_exit'가 없는 위험을 감수하고 싶지 않다면 이 방법이 유일한 옵션일 수 있습니다.