해당 과제를 보면, 다음을 재현하라고 나와 있다.
shell
< infile ls -l | wc -l >
이때 > 와 < 를 리다이렉션이라고 한다.
또, | 기호를 파이프라고 한다.
리다이렉션
각 스트림의 방향을 지정할 수 있음.
> (파일 x) |
표준 출력 (덮어쓰기) | 파일 x에 덮어쓴다. |
< (파일 x) |
표준 입력 | 파일 x |
파이프 : 개요
프로세스 간의 통신을 가능하게 하는 장치이다.
파일 디스크립터가 공유 메모리를 가리키게 함으로써 만들어진다.
이때, 한쪽 프로세스의 파일 디스크립터는 읽기만 수행해야 하는 반면,
다른 프로세스의 파일 디스크립터는 쓰기만 해야 한다.
따라서 열고 닫는 것이 중요하다.
파이프는 pipe()라는 함수를 통해 만든다.
- pipe() 안에 int형 배열을 넣어준다.
- int pipe[0]은 write가 되고, pipe[1]은 read가 된다.
프로세스 1 → pipe[0]을 통해 공유 메모리에 쓴다. → pipe[1]을 통해 공유 메모리를 읽는다. → 프로세스 2