2012-01-10 2 views
3

this question에 대한 답변에서 어떤 사람들은 _Exit()을 사용하고 다른 사람들은 _exit()을 사용했다고 말합니다. 누군가 둘 사이의 차이점 (있는 경우)과 둘 다의 기원을 설명 할 수 있습니까?_Exit()과 _exit()의 차이점은 무엇입니까?

+1

Erm, 그 질문에 대한 대답에 정의 된 표준을 포함하여 거의 모든 것이 바로 그 것입니다. 사실, 링크 된 man 페이지는 각각의 정보가 어디서 왔는지를 알려주고 있습니다 ... 그 답변들 중에서 무엇을 설명해야합니까? –

+0

기원, 그리고 왜 다른 하나를 선택했는지. –

+0

_exit()의 'e'는 소문자이고 _Exit()의 'E'는 대문자입니다. ;) 둘 다 동일합니다. – Bawss

답변

4

오른쪽 :

함수 _exit()가 _exit()와 동등합니다.

C++ 11에서는 std :: _ Exit 또는 std :: quick_exit로 표준화되었지만, Mike Seymourhere에 따르면.

+0

Linux의 경우 동일합니다. 그러나 OS X (BSD)에서는'atexit (3) 함수에 등록 된 함수를 호출하지 않고 _Exit() 함수가 종료되고'exit()'(밑줄이 없음)가 나열된 다른 동작을 수행하거나하지 않을 수 있습니다. 오픈 스트림을 닫고'tmpfile (3)'을 사용하여 생성 된 임시 파일을 링크 해제하는 것입니다. 이 후에'exit()'와'_Exit()'는'_exit()'를 호출하여 프로세스를 종료합니다. – mgd

2

_Exit(2)은 C99에서입니다. _exit(2)은 POSIX 출신입니다. 적어도 맨페이지에 따르면 나는 여기에 설치했다.

이들은 완전히 동일합니다. 맨 페이지 here에서

+0

+1, 이것은 실제로 두 사람의 차이입니다. – MSalters

1

_exit()_Exit()은 완전히 동일합니다. exit()_exit()의 차이점을 이해하려면 on_exit(3)atexit(3) 기능에 대해 알아야합니다. 이러한 함수는 프로세스가 정상적으로 종료 될 때 자동으로 호출되는 함수를 등록하는 데 사용됩니다. 즉, main()의 반환을 통해 또는 exit()의 호출을 통해 호출됩니다.과 atexit()은 함수가 다른 서명으로 등록 될 수 있다는 점이 다릅니다 (등록 된 함수를 프로세스의 소멸자 (객체 지향 프로그래밍 에서처럼)로 생각하십시오).

exit()을 호출하면 atexit() 또는 onexit()을 사용하여 등록 된 모든 기능을 실행하려고 시도 할 때 호출됩니다. 실행시 _exit()이 호출됩니다. _exit()은 정상적인 프로세스 종료 처리 - 파일 설명자를 닫고, 메모리를 해제하고, 고아가 된 자식 프로세스를 초기화하는 등의 작업을 수행합니다. _exit()을 프로세스가 자체 종료하는 데 사용하는 베어 본 시스템 호출이라고 생각하십시오.

응용 프로그램의 전체 많이 동일하게 작동 exit()atexit() 또는 on_exit(), 이들에 대한, _exit(), _Exit()를 사용하지 않기 때문에.

관련 문제