프로세스 종료

2021. 3. 9. 16:17Computer(인강)/시스템 프로그래밍

728x90
반응형

안녕하세요 bannavi입니다^ㅅ^

오늘은 프로세스 종료에 대해서 살펴보려고 합니다

바로 시작해보겠습니다

 

 

 

프로세스 종료

* exit() 시스템 콜: 프로세스 종료

main 함수의 return = 0;과 exit(0);의 차이는?

* exit() 함수 : 즉시 프로세스를 종료함 (exit() 함수 다음에 있는 코드는 실행되지 않음)

* return 0 : 단지 main이라는 함수를 종료함

단, main에서 return시, C언어 실행파일에 기본으로 포함된 _start()함수를 호출하게 되고, 해당 함수는 결국 exit() 함수를 호출함

 

# main() 함수에서 return 0;은exit()호출과 큰 차이가 없음

 

 

 

* 부모 프로세스는  status & 0377(비트연산) 계산 값으로 자식 프로세스 종료 상태 확인 가능.

 

 

exit() 시스템콜 주요동작

1. atexit()에 등록된 함수 실행

2. 열려 있는 모든 입출력 스트림 버퍼 삭제(stdin, stdout, stderr)

3. 프로세스가 오픈한 파일을 모두 닫음

4. tmpfile 함수를 통해 생성한 임시파일 삭제

-> 참고: tmpfile() - 임시파일을 wb+ (쓸 수 있는 이진파일 형태) 모드로 오픈 가능

 

 

atexit() 함수

 

- 프로세스 종료 시 실행될 함수를 등록하기 위해 사용

- 등록된 함수를 등록된 역순서대로 실행

 

atexit() 예제

 

먼저 자기 디렉토리로 가서

ssh로 자기 AWS서버에 접속을 한 다음에,

 

선생님의 경우 여기에 코드를 넣었다고 하시네요

 

atexit() 함수는 정말 등록된 함수를 등록된 역순서대로 실행

728x90
반응형