ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C/C++ exit(3) _exit(2) _Exit(2)
    C,C++ & Linux 2020. 5. 22. 16:50
    728x90

    함수 기능

    프로세스를 종료시켜주는 함수입니다.

     

    exit(3) 은 사용자 라이브러리 함수로 열려있는 파일(표준 입출력 파일 포함)들을 정리하고, 시그널 핸들러들을을 실행한 뒤 _exit(2) 를 호출합니다.

    따라서 vfork() 한 자식 프로세스가 exit(3)을 호출하면 부모 프로세스가 표준 입출력을 사용하지 못하는 문제가 있습니다.

     

    _Exit(2)와 _exit(2) 는 시스템 함수로 파일 정리와 시그널 처리부들을 실행하지 않고 프로세스를 종료시킵니다.

     

    _exit(2)과 _Exit(2) 는 같은 일을 하는 함수입니다.

     

    함수 원형

    #include <stdlib.h>
    
    void exit(int status);
    void _Exit(int status);
    
    #include <unistd.h>
    void _exit(int status);

     

    매개변수

    status

    프로세스의 종료 상태를 의미합니다.

    보통 0 을 리턴하면 정상 종료

    0이 아닌 정수를 리턴하면 비정상 종료로 인식합니다.

     

    예제

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <memory.h>
    
    int main(int argc, char *argv[]) {
        // _IOLBF, 즉 라인버퍼인 표준 출력파일은 개행문자를 만나지 않으면 화면에 보이지 않습니다.
        // exit() 함수는 표준입출력 파일을 정리해주기 때문에 프로스세가 종료되면 화면에 보였지만
        // _exit() 함수는 표준입출력파일을 정리해주지 않기에 보이지 않습니다.
        printf("출력되지않는 구문");
        _exit(0);
    }
    

     

    결과

     

     

     

     

     

     

     

     

     

     

    리눅스시스템프로그래밍 저자 : 홍지만
    https://book.naver.com/bookdb/book_detail.nhn?bid=14623672

    책에 기술된 예제 프로그램입니다. 책 내부에는 훨씬 더 많은 자료가 있습니다. (개인적으로 좋았습니다.)

    'C,C++ & Linux' 카테고리의 다른 글

    C/C++ malloc(3)  (0) 2020.05.22
    C/C++ atexit(3), on_exit(3)  (0) 2020.05.22
    C/C++ tempnam(3)  (0) 2020.05.22
    C/C++ tmpnam(3), tmpfile(3)  (0) 2020.05.22
    C/C++ fileno(3)  (0) 2020.05.22

    댓글

Designed by Tistory.