exit와 _exit의 차이

2019. 5. 9. 16:04임베디드/리눅스시스템프로그래밍

exit() 함수는 표준 입출력 정리 루틴을 수행하고 _exit()를 호출한다. exit() 함수는 파일 스트림에 대해서 동일한 작업을 수행하는데, 열려있는 파일의 스트림에 대해서는 fclose() 함수를 호출해서 버퍼에 남은 데이터를 모두 출력(flush)한다

 

일반적으로 _exit() 함수는 표준 입출력과 관련된 정리 작업을 수행하지 않는 것을 제외하고는 exit() 함수와 비슷한 동작을 수행한다. 만일 vfork()을 수행한다면 메모리를 공유하게 되는데 이때 return 0을 한다면 프로세스들 사이에 공유된 함수의 스택도 삭제되므로 에러를 출력한다

 

따라서 반드시 vfork에서 자식에서 부모로 반환할 때는 _exit 계열을 사용하는 것이 옳은 방법이다