리눅스 파일 디스크립터(Linux File descriptor)

간단 설명

리눅스/유닉스는 모든 장치를 파일로 관리하는데, 일반 파일과 내부/외부 모든 장치도 파일로 취급한다.
이 파일을 관리하는 것이 파일 디스크립터다.

표준 번호 설명

번호 설명 이름 파일 스트림
0 표준 입력(Standard input) STDIN_FILENO stdin
1 표준 출력(Standard output) STDOUT_FILENO stdout
2 표준 에러(Standard error) STDERR_FILENO stderr

추가 설명

파일을 열게 되면 번호가 부여되고 디스크립터 테이블에 저장된다.
테이블에는 0부터 +1씩 순차적으로 자동 증가되는데 윈도우 핸들 개념과 비슷하지만 순차 등록되는 점이 다르다.
0, 1, 2 번호는 예약된 번호로 일반적으로 파일을 열면 3번으로 확인 된다.
번호는 0 이상은 될수 있지만 0 미만은 될 수 없다.
추가 자세한 설명은 아래 링크 참조.

리다이렉션(redirection) 예제

명령어 설명
명령어 1 > output.log 표준 출력을 output.log 파일에 저장("명령어 > output.log" 동일한 결과가 나옴)
명령어 2 > error.log 표준 에러를 error.log 파일에 저장
명령어 0 < input.log 표준 입력을 input.log 파일에서 가져오기("명령어 < input.log" 동일한 결과가 나옴)
명령어 2>&1 표준 에러(2)를 표준 출력(1) 파일 디스크랩터가 참조하는 곳으로 보내기
명령어 1>&2 표준 출력(1)을 표준 에러(2) 파일 디스크랩터가 참조하는 곳으로 보내기
명령어 > /dev/null 표준 출력을 표시하지 않고 표준 에러는 표시
명령어 > /dev/null 2>&1 표준 에러를 표준 출력으로 보내어 표준 출력과 표준 에러 모두 표시 안함