Commend Line - Stdio

정소원·2023년 5월 1일
0

Command Line

목록 보기
3/6

Stdio

stdio

stdio: standard Input/Output (표준입출력)

file channel

  • 하드웨어 내 file에 입출력 하기 위한 통로
  • 입출력 하기 위한 메타 정보를 가지는 객체, 프로세스 스코프에서 유효함, 프로세스 종료 시 휘발됨

file descripter

fd, 파일 서술자

  • 파일 채널들에게 붙여지는 숫자 형태의 식별자
  • 0번 부터 시작

예약된 파일 서술자

  • 0: stdin (standard input, 표준입력)
  • 1: stdout (standard output, 표준출력)
  • 2: stderr (standard input, 표준에러)

PIPE

프로세스 사이에 통신하기 위해 사용됨

IPC(Inter-Process Communication)의 일종

Shell에서도 많이 사용하는 기능

pipe의 종류 2가지

  • anonymous pipe (temporary)
  • named pip (persistency)

anonymous pipe

임시로 생성되었다가 소멸되는 파이프 (nameless pipe, unamed pipe)

  • 프로세스들의 직렬 연결하는 기능

  • 셸 명령행에서 Vertical bar (|)로 사용

    • A | B | C
  • 셸의 stdio에서 주로 배우는 개념

  • 일반적으로 ‘파이프’라고 부르면 익명 파이프임

  • 사용 예

    $ find ~ | wc -l (홈 디렉토리의 파일 개수를 새는 명령어)

    $ find ~ > tmp.txt; wc -l < tmp.txt; rm tmp.txt (같은 작업이 파이프를 사용하지 않으면 길어짐)

    process1: find 명령의 출력 (stdout, 1)

    process2: wc 명령의 입력 (stdin, 0)

    프로세스의 입출력 채널이 서로 연결됨

named pipe

명명된 파이프 (FIFO Pipe)

  • FIFO 규칙으로 작동함
  • file 처럼 구성됨 = path, filename이 존재
  • 따라서 path를 가지는 것을 곧 명명되었다고 표현함
  • mkfifo 명령 (or POSIX C API)를 사용하여 생성

Redirection

채널의 방향을 다른곳으로 지정 (방향재지정)

  • A > B : A의 stdout을 파일 B로 연결

  • A < B : B stdout을 파일 A로 연결

  • A >> B : append mode로 기존 데이터를 지우지 않고 추가됨

  • 사용 예

    sort < names.txt

    ls > filelist1.txt ( > = 1>)

    strace ls 2> strace.txt (stderror, 2 (error 출력)을 txt에 저장)

Cat

stdout과 파일을 자유롭게 연결해주는 기본 필터

  • 용도 - 파일의 내용을 stdout으로 출력
  • 용도 - stdin의 입력을 redirection해서 파일로 출력하는 용도
profile
성장지향형 자율주행 소프트웨어 개발자입니다. K-Digital-Training: 자율주행 데브코스 Planning & Control 1기로 활동하고 있습니다. 본 블로그를 통해 배움기록을 실천하고 있습니다. #자율주행 #기계공학

0개의 댓글