프로세스 관리 2차

파일 디스크립터

프로세스가 파일을 열면 파일 경로나 속성, 오프셋(offset, 파일을 읽거나 쓸 위치) 등 파일 관련 정보를 저장해야 한다. 이 때, 하나의 파일을 여러 프로세스가 동시에 열어 프로세스마다 다르게 사용할 수 있다. 따라서 파일에 대한 정보는 프로세스 별로 관리되어야 하며, 파일 디스크립터라는 추상화된 개념을 사용한다.

소켓, 파이프, 장치 파일 등 모두 리눅스에서는 파일로 다뤄지기 때문에 파일 디스크립터가 관리한다.

파일 디스크립터는 0이상의 정수 값으로 표현한다. 파일이 열리는 순서대로 0부터 할당한다. 프로세스 별로 관리되기 때문에 다른 프로세스에 같은 값을 갖는 파일 디스크립터가 있을 수도 있다. (두 개가 같은 파일 디스크립터를 공유하는 것은 아니라는 의미)

표준 스트림

프로세스가 생성되면 기본적으로 파일 3개를 여는데, 표준 입력, 표준 출력, 표준 에러이다. 이 3개의 파일을 표준 스트림 혹은 표준 입출력이라고 한다. 3개의 파일을 stream이라고 부르는 이유는 데이터가 물줄기처럼 한 방향으로만 움직이며, 먼저 입력된 데이터가 먼저 들어오는 구조이기 때문이다.

표준 스트림

표준 출력 스트림

표준 에러 스트림