The Linux shell is not just a command interface but a system that interprets input, creates processes, and controls execution. This guide explains how programs are executed and managed, from fork and exec to signals and job control, as a single connected flow.
리눅스에서 리다이렉션과 파이프는 단순 문법이 아니라 파일 디스크립터(fd) 연결 구조의 변경이다. 이 글에서는 dup, dup2를 통해 stdout, stderr, pipe가 어떻게 연결되고, 쉘이 실행 전에 어떤 방식으로 I/O 흐름을 재구성하는지 내부 구조 기준으로 설명한다.
Job Control은 프로세스를 실행하는 방법이 아니라, 실행 이후 상태를 어떻게 제어할 것인가에 대한 구조다. 이 글은 foreground, background, stopped 상태가 signal을 통해 어떻게 전이되는지, 그리고 jobs, fg, bg가 어떻게 하나의 제어 모델을 이루는지를 설명한다.