[2023-03-21] 3. Stdio & Archiving/Compression
Stdio
-
Standard Input / Output
-
File Channel : 파일에 입출력하기 위한 통로
-
File Channel에 입출력을 하기 위해서 하드웨어를 직접 접근하지 않고, 표준화된 입출력 방식을 통하도록 하는 가상화 레이어의 일종
-
파일에 입출력을 하기 위한 메타 정보를 가지는 객체
- 프로세스 스코프에서 유효하며 종료와 함께 휘발됨
-
C 언어의 I/O 인터페이스의 심플함을 가능하게 함
-
파일서술자(File Descriptor) : 파일 채널들에게 붙여진 유일한 식별자(숫자)
-
예약된 파일서술자
0 : Stdin (Standard Input, 표준입력)
1 : Stdout (Standard Output, 표준출력)
2 : Stderr (Standard Error, 표준에러)
-
-
PIPE
-
프로세스 사이에 통신으로 사용
-
annoymous pipe
-
익명
-
temporary 성질
-
프로세스 직렬 연결
-
명령행에서 Vertical bar ( ) 사용 $ find ~ | wc -l # vertical bar 사용 $ find ~ > tmp.txt; wc -l < tmp.txt; rm tmp.txt # vertical bar 미사용
-
-
named pipe
- 명명
- persistency 성질
- FIFO(First In First Out) pipe로 불림
- path + filename
-
Redirection
-
채널의 방향을 다른 곳으로 연결
A > B # A의 stdout을 파일 B로 연결 e.g. sort < names.txt # names.txt를 정렬 A < B # A의 stdin을 파일 B로 연결 e.g. ls > filelist.txt # ls의 결과를 filelist.txt에 저장 A >> B # 기존의 파일에 추가 e.g. ls >> filelist.txt # 기존 filelist.txt 파일에 ls의 결과를 추가
Cat
-
Stdout와 파일을 자유롭게 연결해주는 기본 필터
-
파일의 내용을 Stdout으로 출력
-
Stdin의 입력을 Redirection해서 파일을 출력
Archive
-
단순히 파일을 묶는 작업
-
tar
-
tar [ctxv] [f archive-file] files …
c : create(생성)
t : test(테스트)
x : extract(파일풀기)
v : verbose(상세정보출력)
f archive-file : 입출력할 아카이브 파일명
–exclude file : 대상중에 file을 제외 (특정 파일 제외할 때 사용)
$ tar c *.c > arc_c.tar # Archive 후 Redirection으로 파일생성 $ tar cf arc_c.tar *.c # f 옵션을 사용해서 파일생성
-
Compress
-
압축 및 압축해제
-
gzip, bzip2, zip < xz, zstd (압도적인 성능)