프로세스가 종료되면 파일 설명자는 어떻게 되나요?

프로세스가 종료되면 파일 설명자는 어떻게 되나요?

내 응용 프로그램에서 call 을 사용하여 파일을 엽니다 open().

내 질문은 다음과 같습니다

  • 프로세스를 종료하면 파일이 자동으로 닫히나요( close()반환된 파일 설명자에 대한 호출을 사용하는 경우처럼)?
  • 애플리케이션이 충돌하면(예: 분할 오류) 어떻게 되나요?
  • 이것이 어딘가에 문서화되어 있습니까?

답변1

예, 프로세스 종료 이유에 관계없이 프로세스가 종료되면 파일이 자동으로 닫힙니다.

이것은POSIX에 문서화됨. 존재하다"프로세스 종료의 결과”, 기타 결과 중:

  • 호출 프로세스에서 열린 모든 파일 설명자, 디렉터리 스트림, 번역 설명자 및 메시지 디렉터리 설명자는 닫혀야 합니다.

그리고 "프로세스 종료":

중요한 것은 설명된 프로세스 종료 결과는 프로세스 호출 여부에 관계없이 발생한다는 것입니다._출구()(아마도 간접적으로출구()) 또는 신호 또는 기타 사유로 인해 종료되었습니다.

답변2

예를 들어 Linux 커널 프로세스 관리에 대해 읽을 수 있습니다.여기

프로세스가 종료되었습니다

프로세스가 종료되면 커널은 프로세스가 소유한 리소스를 해제하고 하위 프로세스의 상위 프로세스에 종료 사실을 알립니다.

관련 정보