[shell] pipe
- pipe란?
- 한 프로세스의 `` stdout``을 다른 프로세스의 `` stdin``으로 연결하는 IPC 방법이다.
파이프 한 개(r, w 한 쌍) 당 한 쪽 방향으로만 사용할 수 있다.
```
↓ docking! ↓
-------pipe------- ---------process--------- -------pipe-------
w -> r ⇒ stdin stdout ⇒ w -> r
-------pipe------- ---------process--------- -------pipe-------
```
이름없는 파이프
```bash
echo .... | File
( ...; cat ) | File
```
`` A | File`` : A의 표준 출력을 File의 표준 입력으로 연결한다.
fifo ( named pipe )
fifo ( named pipe )는 anonymous communication channel인 그냥 pipe와 달리 pipe에 이름이 있고 파일 형태로 접근한다. 아래의 경우 실제로 디렉토리에 파이프 이름인 `` f``라는 특수파일이 생성된다. `` f``를 통해 `` target``에 표준입력 할 수 있다.
```bash
$ rm -f /tmp/f; mkfifo /tmp/f
$ ./target < /tmp/f &
$ cat printfile > /tmp/f
```
`` &``를 이용해 표준 입력 연결을 백그라운드로 돌려놓았다.
etc
Control operators:
```bash
& && ( ) ; ;; | || <newline>
```
Redirection operators:
```bash
< > >| << >> <& >& <<- <>
### [n] 생략하면 stdout이 대상이다.
[n]>> file Append standard output (or n) to file.
[n]<> file Open file for reading and writing on standard input (or n).
### & means whatever follows is a file descriptor, not a filename.
[n1]>&fd Redirect standard output (or n1) to fd.
[n1]>n2 Redirect standard output (or n1) to n2.
> /dev/null 2>&1 stdout(1)을 /dev/null로 보내고, stderr(2)를 stdout(1)로 보내라 (즉 둘 다 null로 간다)
```
stdin과 pipe
'OS > LINUX & UNIX' 카테고리의 다른 글
main startup routine bt (0) | 2016.11.15 |
---|---|
[setuid] ruid, euid (0) | 2016.11.15 |
PLT, GOT (0) | 2016.11.01 |
NetCat ( nc ) (0) | 2016.10.25 |
xinetd / micro-inetd (0) | 2016.09.26 |