내 응용 프로그램에서 call 을 사용하여 파일을 엽니다 open()
.
내 질문은 다음과 같습니다
- 프로세스를 종료하면 파일이 자동으로 닫히나요(
close()
반환된 파일 설명자에 대한 호출을 사용하는 경우처럼)? - 애플리케이션이 충돌하면(예: 분할 오류) 어떻게 되나요?
- 이것이 어딘가에 문서화되어 있습니까?
답변1
예, 프로세스 종료 이유에 관계없이 프로세스가 종료되면 파일이 자동으로 닫힙니다.
이것은POSIX에 문서화됨. 존재하다"프로세스 종료의 결과”, 기타 결과 중:
- 호출 프로세스에서 열린 모든 파일 설명자, 디렉터리 스트림, 번역 설명자 및 메시지 디렉터리 설명자는 닫혀야 합니다.
그리고 "프로세스 종료":
중요한 것은 설명된 프로세스 종료 결과는 프로세스 호출 여부에 관계없이 발생한다는 것입니다._출구()(아마도 간접적으로출구()) 또는 신호 또는 기타 사유로 인해 종료되었습니다.
답변2
예를 들어 Linux 커널 프로세스 관리에 대해 읽을 수 있습니다.여기
프로세스가 종료되었습니다
프로세스가 종료되면 커널은 프로세스가 소유한 리소스를 해제하고 하위 프로세스의 상위 프로세스에 종료 사실을 알립니다.