Linux
[ Linux ] 리눅스 파일 디스크립터란?(Linux File descriptor)
호IT
2020. 4. 17. 18:38
파일 디스크립터란?
- 시스템으로부터 할당 받은 파일을 대표하는 0이 아닌 정수의 값입니다.
프로세스에서 실행되는 파일들의 목록을 관리해주는 테이블의 인덱스값입니다. - 리눅스/유닉스는 모든 장치를 파일로 관리하는데, 일반 파일과 내부/외부 모든 장치도 파일로 취급합니다.
이 파일을 관리하는 것이 파일 디스크립터 라고 부릅니다!
프로세스마다 0,1,2 번으로는 아래의 표로 사전 배정이되어있고 그 뜻은 아래와 같습니다.
그러하여 하나의 파일을 생성하게되면 3번부터 시작하여 파일 디스크립터가 부여됩니다.
번호 | 설명 | 이름 | 파일스트림 |
0 | 표준 입력 | STDIN_FILENO | stdin |
1 | 표준 출력 | STDOUT_FILENO | stdout |
2 | 표준 에러 | STDERR_FILENO | stderr |
부가설명
어떠한 파일을 열게되면 번호가 부여되고 파일 디스크립터 테이블에 따로 저장됩니다.
그 테이블 안에서는 0부터 1씩 순차적으로 증가하며,
파일 디스크립터 C int 타입으로 표현되고, 최대값은 1024 이지만 1024^2인 1048576 까지 설정이 가능합니다.
윈도우에서는 핸들이라고 생각하면되고 프로세스로 생각하자면 고유번호 PID 와 비슷하게 보이네요!
그럼 표준 스트림이란?
[특정한 프로그래밍 언어 인터페이스 + 유닉스 + 유닉스 계열 운영 체제] 에서
Computer Program과 단말기 간의 미리 연결된 입출력 통로를 의미한다고 합니다.
한줄요약하자면.. 그냥 연결통로라고 생각하시면됩니다.
보통 입출력은 물리적으로 연결된 시스템 콘솔인 키보드와 모니터를 통해서 발생하는데,
이를 표준 스트림은 추상화 시킨것입니다!
.