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, 표준에러)

image

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 (압도적인 성능)