Nathan Fellman
그는 물었다 12년 전
19

차이점은 () 와 아테스트 () 함수를 on_exit 있나요?

유지됩니까 차이

   int on_exit(void (*function)(int , void *), void *arg);

   int atexit(void (*function)(void));
사용되는 함수를 얻을 수 있는 것도 아닌 on_exit 종료 상태는?

즉, 만약 내가 don& # 39, t care about 종료 상태, 둘 중 하나만 사용해야 할 이유가 있습니까?

  • Edit:* on_exit it& # 39 의 비표준 '' 때문에 많은 답변 경계했다. # 39 m I& 경우, 특정 기업 내부 사용 및 보장할 수 있는 앱을 개발하고 캐비닛용입니다 실행하십시오 구성, 이 걱정은 합니까?

답변 5 개

가능하면 아테스트 콩지름에 ' ()'. 비표준 'on_exit ()' 가 더 흔하다. 예를 들어, it& # 39 의 맥 os x 에서 사용할 수 없습니다.

Kernel.org - ['on_exit ()'] (http://www.kernel.org/doc/man-pages/online/pages/man3/on_exit.3.html): &gt. 썬 os 4 에서 이 기능을 그때그들은 존재하는 것이 아니라, 또한 libc4 libc5 및 glibc. 더 이상 발생하는 solris (SunOS 5). 이 기능을 방지 및 이 표준을 사용하여 아테스트 (3) 를 사용할 수 있습니다.

이 링크 I found 따르면, 몇 가지 차이점을 보인다. 'on_exit' 은 '에' 기능을 사용하면 인수를 통과될 때 전달되는 on_exit 호출됨. 일부 포인터는 설정할 수 있는 시간을 작업할 수 있게 할 경우 일부 지우는중 종료하십시오.

또한, 특정 기능을 하지 않는 것으로 보인다 '는' on_exit SunOS 호환되어야 모든 플랫폼에서. 그래서 더 제한적인 it 기술입니까 아테스트 함께 불구하고 그대로 사용할 수도 있습니다.

다른 점은 '와' C '는' 다소 이상한 아테스트 on_exit 확장명은 support. dell. GNU 및 또 다른 아는 유니스리 시스템 (하지만 일부가 아니라 posix).

39, t, 내가 can& @nathan 찾을 경우 종료 코드를 함수가 있는 반환되므로 현재 실행 중인 프로세스를. # 39, t 데이텀이 isn& 기대한다 () ',' 아직 정해지지 시점에 아테스트 호출됨 겁니다. 내가 무얼 의미하는 것이 아니라, 아마도 이 (가), t 보고됨 런타임용으로 개발하십시오 hasn& # 39 이것은 그냥 추측, 꽤 많은 어쨌든요 迈向 os.

마치 인컨텍스트 구조 () '또는' on_exit 사용해야 할 수 있도록 프로그램에 종료 코드를 doesn& # 39, t 일이 아니다. 마지막 것은 결코 있을 수 있는 '뒤집기' 를 통해 주요 기능은 노드전역 exited_cleanly 가변적입니다 진정한. 함수 () ',' 아테스트 등록할 수 있는 방법을 결정할 수 있는 이 변수를 체크 프로그램을 종료되었습니다. 이 두 가지 상태, 하지만 난 약간만이라도 충분하나니 제공하십시오 그칠 것으로 대부분의 합니다. 이 유형의 구성표가 더 많이 지원할 수 있도록 필요한 경우 종료 상태 확장하십시오 수도 있습니다.

@Nathan

첫째, 다른 API 호출 있는지 확인하기 위해 종료 상태. # 39 는 간단한 설명, t, but I am not 자네들이야 정통한 한 don& 쉐퍼드도 지켜보리니 표준 C API.

할 수 있는 대안은 글로벌 변수를 저장하는 종료 상태. 기본값입니다 알 수 없는 오류가 발생할 수 있다 (만약 프로그램이 비정상적으로 종료될 경우). 그 시절, 전화하시기 종료하십시오 종료하십시오 전역 및 정보기술 (it) 의 모든 기능을 지위를 읽어들입니다 아테스트 저장할 수 있습니다. 이를 위해서는 열심히 갖추고 있지 않은 상태를 저장하기 전에 통화 등 모든 종료하십시오 종료하십시오 확실히요 신앙이니라 apiu 진실이며당신이 don& 없다 싶지 않다 '리스크' # 39, 플랫폼에서 on_exit 이뤄지지 않았다. 만 사용할 수 있습니다.