일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- cli
- fastify-cli
- zshrc error
- comdef
- 코드스테이츠
- mysql
- docker
- char 입력
- fastify
- neofetch
- ECS
- 홈 디렉토리
- 부트캠프
- 수직확장
- OpenSearch
- 프로세스
- 웹 SW
- SSAFY입학
- docker context create
- Java 입력
- ci/cd
- 출력 명령어
- dfs
- 리눅스
- MongoServerSelectionError
- 지속적 전달
- 백준
- DevOps
- c++
- 설치형 SW
- Today
- Total
다디와 괴발개발
표준 스트림과 stdin, stdout, stderr 본문
C언어를 사용하다 보면 헤더에 #include <stdio.h>를 많이 볼 수 있다.
stdio는 Standard Input & Output의 줄임말로 표준 입출력을 의미한다.
리눅스 쉘에서도 쉘의 기능들을 최대한으로 끌어내기 위해 표준 입출력에 대한 이해가 필수적이다.
먼저, 표준 스트림에 대해 살펴보자
표준 스트림
표준 스트림이란? Standard Stream에서 Stream은 프로그램을 드나드는 데이터의 흐름을 말한다.
프로그램은 보통 입력을 받으면 어떤 형태로 출력을 내놓는다. 이렇게 컴퓨터 프로그램과 입출력 장치 사이에 미리 연결된 입출력 통로를 표준 스트림이라고 생각하면 된다.
표준 스트림은 stdin, stdout, stderr, 세 가지가 있다.
STDIN (Standard Input, 0)
stdin은 입력을 위한 스트림으로, 프로그램으로 들어가는 입력값의 데이터를 의미한다
예를 들어, sudo 모드를 사용하기 위해서는 비밀번호를 입력해줘야 하는데, 비밀번호를 입력할 때 표준 입력 스트림을 사용하게 된다
STDOUT (Standard Output, 1)
stdout은 출력을 위한 스트림으로, 프로그램이 출력 데이터를 기록하는 스트림이다.
명령을 입력하면 나타나는 결과들 모두 stdout에 해당하며, 주로 텍스트 터미널에서 이루어진다.
하지만, 모든 입력에 대해서 프로그램이 출력을 내지는 않는다. 예를 들어 파일 이름 바꾸기 명령에 해당하는 mv
와 같은 명령어는 성공적이어도 아무 메시지도 나타나지 않는다.
STDERR (Standard Error, 2)
stderr는 오류 메시지를 위한 스트림이다.
오류 메세지나 진단을 출력하기 위해 쓰이는 출력 스트림이다.
또 다른 출력 스트림의 형태이지만, 표준 출력과는 독립적인 스트림이며 별도로 리다이렉트 될 수 있다.
텍스트 터미널인 쉘 환경에서 사용자가 키보드를 통해 stdin에 해당하는 입력을 하면, 프로세스는 반드시 stdout이나 stderr를 모니터에 출력해줘야 한다.
'DevOps > Linux' 카테고리의 다른 글
리눅스 출력 관련 명령어 (0) | 2022.03.30 |
---|---|
리다이렉션과 파이프라인 (0) | 2022.03.19 |
리눅스 명령어로 프로세스 관리 (0) | 2022.03.18 |
프로세스, 스레드, 멀티 스레드 (feat. 크롬) (0) | 2022.03.15 |
패키지와 패키지 매니저 - brew, wget, neofetch (0) | 2022.03.14 |