unix/linux는 모든 무료 파일 설명자 목록을 유지합니까?

unix/linux는 모든 무료 파일 설명자 목록을 유지합니까?

저는 Robert Love의 "Linux Systems 프로그래밍"을 읽고 파일 설명자의 개념을 이해하려고 노력하고 있습니다.

그가 언급한

파일 설명자는 0부터 시작하여 이 최대값보다 작은 1까지 올라갑니다. 기본적으로 최대값은 1,024입니다.

예를 들어, 파일 설명자 500과 501을 각각 사용하여 두 개의 파일을 엽니다.

이제 파일 설명자가 500인 파일이 닫히면 다음에 할당될 fd가 502가 된다는 의미입니까? 500개 재사용 가능한가요?그렇다면 커널은 닫힌 모든 파일 설명자를 어떻게 유지합니까?

답변1

Linux는 Unix 계열 시스템과 마찬가지로 커널이 관리하는 파일 할당자 테이블을 사용합니다. open은 설명자를 생성하고, 가장 낮은 닫힌 파일 설명자를 재사용하거나 새 항목을 만듭니다. close 테이블에서 닫힐 항목을 설정합니다.

답변2

이것리눅스 매뉴얼 페이지open(2)지적

성공적인 호출에 의해 반환된 파일 설명자는 현재 프로세스에 대해 열려 있지 않은 가장 낮은 번호의 파일 설명자가 됩니다.

따라서 500과 501만 열면 다음으로 얻는 것은 0입니다. 일반적으로 합리적인 것을 가리키는 0( stdin), 1( stdout) 및 2( )가 있거나 데몬인 경우에는 물론입니다 .stderr/dev/null

관련 정보