리눅스 강의 정리 Day 7 - #1 stdio

joy_hye5·2020년 12월 17일
0

stdio

UNIX standard I/O의 file descriptor

  • stdin = 0
  • stdout = 1
  • stderr = 2

redirection

stdio의 입출력 방향을 변경하는것이다. stdio는 추상화된 입출력 레이어이므로 논리적으로 연결을 바꿀수있고 해제도 가능하다.

file redirection

>FILE : 표준출력을 파일로 변경한다.
>>FILE : 표준출력을 기존의 파일에 덧붙이거나 없으면 새 파일을 만들어준다.
<FILE : 표준입력을 파일에서 입력받는다
<<<TEXT : 표준입력에 텍스트를 입력받는다.

redirection : file descriptor

<&# : 표준입력을 파일에서받는다. (&#생략시 0을 의미한다)
#> : fd #번을 파일로 받는다. (#생략시 1을 의미한다.)
&> : stdout, stderr를 파일로 받는다.
>&# : 출력을 fd #으로 받는다.
a | b : 리다이렉션 파이프로 a의 표준 출력을 b의 표준입력으로 연결한다.

예제

1.아래와 같은 쉘 스크립트를 만들고 ./redirection.sh > redirection.txt 명령어를 실행해보자.

#!/bin/bash
echo "+ Message : stdout"
echo "+ Message : stderr" >&2

첫번째행의 내용은 redirection.txt 파일에 저장되고 두번째 행의 내용은 화면에 출력되는것을 알수있다.

2.sysctl -a 2>/dev/null | grep tcp 명령을 실행해보자

stderr를 null로 보내기 때문에 출력 결과는 에러가 없는 정상 메세지만 출력된다.

redirection : pipe

redirection은 프로세스의 입출력을 파일로 사용하는 것이라면 파이프는 프로세스간 사용하는 통신 방법이다.

FIFO : named PIPE

  • pipe는 직렬 통신을 제공하고, 가벼운 특징이 있다.
  • named / anonymous pipe

0개의 댓글