파이프 개념
- 두 프로세스가 통신할 수 있게 하는 전달자로서 동작한다.
파이프 종류
1. 일반 파이프(익명 파이프, anonymous pipe)
- pipe(int fd[]) 함수
- fd[]를 통해 접근되는 파이프를 생성한다.
- fd[0] : 읽기 전용 / fd[1] : 쓰기 전용
- 단방향
- 통신하는 두 프로세스는 부모-자식 관계여야 한다.
- 파이프를 생성한 프로세스 이외에는 접근할 수 없기 때문에
- 통상적으로 부모 프로세스가 파이프를 생성하고, fork()로 생성한 자식 프로세스와 통신하기 위해 사용한다.
- 생산자-소비자 형태로 두 프로세스 간의 통신을 허용한다. (읽고 - 쓴다)
- fork() 함수에 의해 복사되지 않는다.
- fork() 함수에 의해 프로세스가 생성되면 file descriptor를 공유하게 된다.
- 부모 프로세스와 자식 프로세스가 같은 파이프를 가리킨다.
- 한쪽으로만 데이터를 전송할 수 있으며, 오직 단방향 통신만 가능하다.
- 만일 양방향 통신이 필요하다면 각각 다른 방향으로 데이터를 전송할 수 있는 두 개의 파이프를 사용해야 한다.
- 참고 : https://velog.io/@t1won/Unix-pipe
[Unix] pipe
파이프(Pipe)란 프로세스간 통신을 할 때 사용하는 커뮤니케이션의 한 방법이다.pipe를 이용하면 2개의 파일 지시자를 생성할 수 있다. 2개가 생성되는 이유는 읽기 전용과 쓰기 전용의 파이프를
velog.io
2. 지명 파이프(named pipe)
- 일반 파이프는 한 쌍의 프로세스가 통신할 수 있는 간단한 기법을 제공하지만 오로지 프로세스들이 서로 통신하는 동안에만 존재한다.
- named pipe는 좀 더 강력한 통신 도구를 제공한다.
- 양방향 통신이 가능하며, 부모-자식 관계도 필요로 하지 않는다.
- named pipe가 구축되면 여러 프로세스들이 이를 사용해 통신할 수 있다.
- 통신 프로세스가 종료되더라도 named pipe는 계속 존재하게 된다.
'운영체제' 카테고리의 다른 글
python에서의 멀티 스레드, 멀티 프로세스 (0) | 2022.03.02 |
---|---|
install pip for python2.7 in ubuntu20.04(feat. pwntools) (0) | 2022.02.04 |
ubuntu20.04 wine 설치 (0) | 2022.01.15 |
ubuntu 15.04 apt-get update error 해결 (0) | 2021.11.24 |
pseudo terminal(import pty) (0) | 2021.09.05 |
댓글