파일 디스크립터(FD)

1. 개념

-리눅스 혹은 유닉스 계열의 시스템에서 프로세스(process) 파일(file) 접근하기 위한 추상적인

-유닉스 시스템은 일반적인 파일부터 디렉토리, 소켓, 파이프, 블록/캐릭터 디바이스 등등 모든 객체들을 파일로 관리

 

-프로세스가 실행 중에, 파일 Open시 커널은 해당 프로세스의 파일 디스크립터 숫자 중 사용하지 않는 가장 작은 값 할당하는데 

그 다음 프로세스가 열려있는 파일에 시스템 콜을 이용해서 접근할 때, 파일 디스크립터(FD)값으로 파일에 접근한다

 

-프로그램이 프로세스로 메모리에서 실행을 시작 , 기본적으로 할당되는 파일 디스크립터 0,1,2 를 제외하고 3부터 fd 할당

FD    
0 표준 입력 (stdin) 키보드로 명령을 입력받는 것
1 표준 출력 (stdout) 키보드로 입력받은 명령의 실행결과를 모니터로 출력
2 표준 오류 (stderr) 에러를 모니터로 출력

2. 파일 스크립터(FD) 확인

#PID를 통해서 fd를 조회할 수 있다
$sudo ls -trn /proc/[PID]/fd

3. FD최대값

- FD최대값 = OPEN_MAX

- OPEN_MAX는 limits.h 에 정의되어 있고, OS마다 그 크기가 다름

$getconf OPEN_MAX

256			//값 출력

입출력 리다이렉션

출력 결과를 모니터에 출력하지 않고 파일에 저장

리다이렉션 기호 앞에 디폴트로 1(기본출력)이 지정된다

리다이렉션 기호    
> 출력 리다이렉션 명령 (FD번호)> 파일명 : 명령 결과를 파일에 저장(기존 파일 내용 지우고 덮어씀)
>> 출력 리다이렉션 명령 (FD번호) >> 파일명 : 명령 결과를 기존 파일 끝에 추가
< 입력 리다이렉션 명령 < 파일명 : 파일 내용을 입력

 

 

기호 의미
명령 >& 파일명 명령이 실행된 표준 출력의 결과와 에러를 파일로 출력
명령 >>& 파일명 명령이 실행된 표준 출력의 결과와 에러를 파일로 덧붙여 출력
명령 >! 파일명 파일의 존재유무와 상관없이 생성하고 명령이 실행된 표준 출력의 결과를 파일로 출력
명령 >&! 파일명 파일의 존재유무와 상관없이 생성하고 명령이 실행된 표준 출력의 결과와 에러를 파일로 출력
명령 >>! 파일명 파일의 존재 유무와 상관ㅇ벗이 생성하고 파일에 덧붙여 출력
명령 >>&! 파일명 파일의 존재 유무와 상관없이 생성하고 명령이 실행된 표준 출력의 결과와 에러를 파일이 덧붙여 출력
명령A | 명령 B 명령 A 출력을 명령 B 입력으로 사용하여 실행
명령A |& 명령 B 명령 A 출력과 에러를 명령B 입력으로 사용하여 실행
명령 /dev/null 2>&1
에러 메세지 미출력

- /dev/null : 특수 파일, 디렉터리 아님

널 장치는 일반적으로 리다이렉션에 쓰여지는데 프로세스의 원하지 않는 출력 스트림을 버리거나 입력 스트림을 위해 비어있는 파일의 역할을 하기 위해 사용된다. 

https://ko.wikipedia.org/wiki/%EB%84%90_%EC%9E%A5%EC%B9%98

 

 

'Shell > 1' 카테고리의 다른 글

/etc/sudoers | visudo  (0) 2021.09.13
UFW(Uncomplicated Firewal) 설정  (0) 2021.09.06
vim .vimrc환경설정  (0) 2021.06.19
make / Makefile  (0) 2021.05.18
touch  (0) 2020.10.15

+ Recent posts