스트림은 Server, 네트워킹 환경에서 두가지 의미를 가지고 있다.
데이터, 비트, 패킷, 소켓 등 각 데이터 네트워킹 계층에서 전송되는 개체의 흐름
시스템에서 데이터 혹은 이에 준하는 개체가 통하는 통로
이 중 보통은 개체의 흐름을 의미한다.
특히 C언어가 시스템 그 자체인 리눅스 환경에서 스트림은 대표적으로 표준입출력스트림(stdio.h, stdin.h 라이브러리를 활용한 명령어 구문)이 있다.
이는 말 그대로 비트흐름 및 데이터 송수신 그 자체 혹은 data 입력 및 출력까지 이루어지는 일련의 과정을 일컫는다.
데이터 흐름과 네트워킹을 위한 가장 기본적인 개념
#include<stdio.h>
우리가 무심코 사용하는, 가장 대표적인 stdio.h 라이브러리는 standard input/ouput을 의미하며, C언어 및 리눅스의 표준입출력스트림을 구현하는 핵심 라이브러리이다.
리눅스 환경의 스트림은 단순히 문자열입출력 관리를 넘어, C언어 실행파일로 만들어 데이터들의 흐름과 경로를 제어하고 파악하기 위한 중요 개념으로 이해해야 한다.
리눅스는 보통의 운영체제처럼 여러 device를 물리적 개념으로 다루는 것이 아니라, 하나의 파일화하고 이를 Controll하는 단일 구조체계(inode방식) 및 가상의 체계로 다룬다.
이 파일은 리눅스 체계에서는 C언어로 구성되어 컴파일된 파일이 대부분이다.
즉 리눅스에서 스트림은, C언어를 통해 데이터 흐름을 하나의 파일로 관리할 수 있는 구조와 같다. 더 나아가 Server 컴퓨터의 데이터 네트워킹을 위한 가장 기본적인 개념이기도 하다.
Redirection
Not Sugar syntax, but Sugar logic!