[Linux] 파일 디스크립터(File Descriptor)

리눅스를 포함한 유닉스계열 OS들의 공통점 중 하나는, 모든 것을 "파일"처럼 관리할 수 있다는 것이다.

그래서 진짜 파일뿐만 아니라 소켓통신, 로그나 여러가지 디바이스 I/O 등에 대한 것을 전부 파일처럼 보고 관리할 수 있게 해준다.

파일 디스크립터는 그런 것들을 가리키고 관리할 수 있게 해주는 통로다.

먼저 "파일 테이블"이란 파일 목록이 있다.
그리고 파일 디스크립터는 테이블의 요소들을 가리키는 고유한 unsigned integer 값이다.
이런 구조다.

여기서 알아두면 좋은 것 중 하나는, 디스크립터 0-2번까지는 특수하게 예약되어있단 것이다.
0번은 표준 입력, 1번은 표준 출력, 2번은 표준 에러다. C를 깊게 다뤄봤다면 들어봤을 것이다.

그래서 뭔가 추가적으로 파일을 열거나 소켓을 열면 디스크립터 번호는 3부터 시작한다.

그리고 한번에 열수있는 파일 디스크립터의 수는 보통 정해져있다.
최대치는 다음 명령어로 확인할 수 있다.
getconf OPEN_MAX