일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- vscode
- 플라스크
- visual studio code
- 에러
- 디렉토리
- 머신러닝
- 단축키
- 역할
- 우분투
- 리눅스
- SQL
- OpenCV
- 가상환경
- 깃허브
- 판다스
- 프로그래머스
- 기초
- 예제
- 원격저장소
- 코랩
- 파이썬
- 데이터분석
- MySQL
- 엑셀
- 아나콘다
- 운영체제
- 디버깅
- matplotlib
- 라이브러리
- 데이터베이스
Archives
- Today
- Total
취미와 밥줄사이
[ Linux ] File Descriptor(파일 디스크립터) 본문
파일 디스크립터
- 시스템으로부터 할당 받은 파일을 대표하는 0이 아닌 정수 값
- 프로세스에서 열린 파일의 목록을 관리하는 테이블의 인덱스
- 유닉스 시스템에서 모든 것은 파일이다.
- Regularfile, Directory, Socket, PIPE, Block Device, Character Device 등등 모든 객체들을 파일로써 관리된다.
- 유닉스 시스템에서 프로세스가 이 파일들을 접근할 때 File Descriptor라는 개념을 이용한다.
- 파일 디스크립터는 '0이 아닌 정수', 'Non-negative Integer'값이다.
- 음수가 아닌 0과 양수인 정수 값을 가진다.
- 프로세스가 실행중인 파일을 Open하면 커널은 해당 프로세스의 파일 디스크립터 숫자 중에 사용하지 않는 가장 작은 값을 할당해준다.
- 유닉스에서는 기본적으로 입력을 터미널 키보드와 연결시키고 출력을 터미널 디스플레이와 연결시킨다.
- 유닉스는 키보드와 모니터를 포함하여 컴퓨터의 모든 것을 파일로 모델링 하는 것으로 유명하다.
- 디스플레이어에 데이터를 쓰는 것은 스크린 위에 데이터 디스플레이를 담당하는 어떤 파일에 데이터를 쓰는 것
- 키보드에서 데이터를 읽어오는 것은 키보드를 나타내는 어떤 파일에서 데이터를 읽어오는 것이다.
- 데이터는 바이트를 한 곳에서 다른 곳으로 전송하는 스트림(Stream)을 통해 흐른다.
- 3가지의 Default input/output streams가 있다.
- 표준 입력(Standard Input(STDIN), 표준 출력(Standard Output(STDOUT)), 그리고 표준 오류(Standard Error(STDERR))이다. 기본적으로 이 스트림들은 각자 특정한 파일 디스크립터(File Descriptor)를 가지고 있다.
- 각 파일 디스크립터는 어떤 정수(Inter)값인데 그것은 어떤 하나의 open file과 연결되어 있다.
- 그리고 프로세스들은 파일 디스크립터를 이용해 데이터를 처리한다.
- stdin=0, stdout=1, stderr=2
- 이 파일 디스크립터들은 어떤 하나의 파일 디스크립터 테이블에 저장되어 있다.
- 일반적으로 데이터가 어떤 곳으로 흘러들어가는 것을 입력이라고 하며, 데이터가 어떤 곳으로부터 흘러나가는 것을 출력이라고 한다.
- 터미널로 데이터를 출력할 수 있는 스트림은 기본적을 2가지다.
- stdout과 stderr이다.
- 터미널로 데이터를 출력할 수 있는 스트림은 기본적을 2가지다.
- 리눅스에서 입력이란
- stdin을 이용해 전달된 데이터, 그리고 그 입력이 키보드, I/O redirection, file arguments)는지 상관없이
- 리눅스 / 유닉스는 모든 장치들을 파일로 관리하는데. 일반 파일과 내부/외부 모든 장치도 파일로 취급한다. 이 파일을 관리하는 것이 파일 디스크립터다.
FIle Descriptor Table
- 각각의 프로세스는 파일 디스크립터 테이블을 가지고 있음
- 파일 디스크립터 테이블에는 파일 디스크립터가 저장되어 있음
- 파일 디스크립터 테이블은 프로세스가 생성될 때 기본적으로 0, 1, 2에 해당하는 파일 디스크립터가 매핑됨
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 | 표준 에러를 표준 출력으로 보내어 표준 출력과 표준 에러 모두 표시 안함 |
REFERENCE
https://dev-ahn.tistory.com/96
https://architectophile.tistory.com/8
https://icarus8050.tistory.com/122
https://blog.gaerae.com/2014/10/linux-file-descriptor.html
'OS > Linux' 카테고리의 다른 글
[ CentOS7 ] yum 캐시 정리 (0) | 2022.03.06 |
---|---|
[ CentOS7 ] RPM 명령어 사용법 (0) | 2022.03.06 |
[ Linux ] zsh 프롬프트 현재 디렉터리만 표시하는 방법 (0) | 2022.02.13 |
[ Ubuntu 20.04 ] zsh에 Anaconda 설치 (0) | 2022.02.13 |
[ Linux 명령어 ] source 명령어란 (0) | 2022.02.12 |