2010-03-05 3 views
2

파일을 만들 때 운영 체제에 파일 이름을 제공하고 파일을 만들고 핸들을 반환합니다.운영 체제가 고유 한 파일 핸들을 만드는 방법은 무엇입니까?

어떻게 만들어 졌는지 궁금합니다.

운영 체제가 고유 한 파일 핸들 을 생성하기 위해 파일 이름에 일종의 해싱을 수행합니까? 아니면 생성 된 파일 수를 늘리고 파일 핸들로 반환합니까?

답변

1

파일 핸들은 주어진 시간에 한 프로세스 내에서만 고유합니다. 리눅스에서는 증가하는 간단한 카운터라고 생각합니다. Windows는 파일에 대한 정보 블록에 메모리 주소를 반환합니다 (정보 블록의 구조는 운영 체제 내부이므로 직접 처리 할 수 ​​없음).

2

아니요, 이것은 하나의 프로세스에 고유 한 OS 커널 내부의 배열에 대한 인덱스입니다. 파일 핸들은 보통 작은 정수입니다.

1

파일 핸들 (파일 설명자)은 해당 프로세스에 고유 한 숫자입니다. 예를 들어 표준 입력, 출력 및 오류에는 fds (0, 1, 2)가 있습니다. 리눅스에서 /proc/PID/fd에있는 프로세스의 파일 디스크립터를 확인할 수 있습니다. 여기서 PID은 프로세스 ID입니다.

$ pidof executable 
4711 
$ ls -l /proc/4711/fd 
... 
$ # Use 'lsof' to show file descriptor opened by this process: 
$ lsof -p 4711 
... 
: 여기

은 일례이며
관련 문제