리눅스 파일 디스크립터(File Descriptor)란?
- 운영체제(OS)
- 2023. 3. 26.
유닉스 / 리눅스 운영체제에는 I/O 리소스를 관리하고 액세스 하는 파일 디스크립터라는 개념이 있습니다. 파일 디스크립터가 무엇인지, 어떻게 사용되는지 알아보겠습니다.
파일 디스크립터란?
파일 디스크립터(File Descriptor)는 유닉스 계열 운영체제에서 파일, 파이프, 네트워크 소켓 같은 I/O 리소스와 상호작용 하는 프로세스에서 사용할 수 있는 참조 값으로 음이 아닌 정수로 할당됩니다. 이를 테면 프로세스가 시스템 커널에 함수를 콜할 때 연결된 파일에 부여된 숫자로 이야기하는 개념이라고 이해할 수 있습니다.
파일 디스크립터 예시
리눅스에서 example.txt라는 파일을 열고, 읽고, 닫는 작업을 예시로 들어보겠습니다.
1. 파일 열기
파일을 열 때는 시스템 함수인 open()을 이용합니다. 이 함수를 콜하면 운영체제는 이에 대해 고유한 파일 디스크립터를 반환합니다. 그 숫자는 3이 될 수도 있고, 4, 5, … 100 등이 될 수 있습니다.
int fd = open("example.txt", O_RDONLY);
2. 파일 내용 읽기
read() 함수를 호출해서 파일을 읽습니다. 이때 앞서 open()을 통해 반환받은 파일 디스크립터(fd)가 인수로 전달됩니다. 프로세스가 os에게 "아까 open()했을 때 3번 파일 디스크립터를 부여했던 example.txt를 읽어주세요"라고 부탁하는 것입니다.
ssize_t bytes_read;
char buffer[100];
bytes_read = read(fd, buffer, sizeof(buffer));
코드에서 보이는 것처럼 read() 함수의 파라미터로 fd를 전달합니다.
3. 파일 닫기
close() 함수를 콜해서 파일을 닫습니다. 이때도 역시 파라미터로 파일 디스크립터를 보냅니다.
close(fd);
참고로 윈도우에는 파일 디스크립터와 비슷한 개념으로 핸들이 있습니다.
'운영체제(OS)' 카테고리의 다른 글
윈도우 대기 스레드 수 확인하는 방법 (성능 모니터) (0) | 2023.03.31 |
---|---|
맥북에서 txt 확장자 파일 만들기 (0) | 2023.03.27 |
맥북 "시스템 확장 프로그램을 활성화하려면 복구 환경에서 보안 설정을 수정해야 합니다" 해결 (0) | 2023.03.26 |
맥북 사용자 계정 간 파일 전송하는 방법 (공유 폴더) (0) | 2023.03.26 |
윈도우 레지스트리(.reg) 백업하는 방법 (0) | 2023.03.17 |