DevOps/Distributed Computing
[분산시스템][IPC] PIPE 개념 및 프로그래밍
brad.min
2021. 11. 7. 22:46
반응형
IPC mechanism 1: PIPE
- 공통 부모를 갖거나 부모와 자식 프로세스간 데이터 통신 방법이며 단방향 통신을 위한 선입선출(FIFO) 방식의 데이터 전달 기법이다.
- 단방향 통신으로 한쪽 방향으로만 데이터를 전송할 수 있어 A프로세스가 write()를 하면 B프로세스에서는 read()만 가능하다.
- 양방향 통신을 위해 두개의 PIPE를 사용해야하기 때문에 메모리 소비가 증가한다.
- read(), write()는 block mode 이기 때문에 한프로세스가 read() 대기중이면 write()를 할 수 없다.
- pipe()라는 함수에 배열을 입력하여 프로세스들이 공유할 PIPE를 생성. 하나의 파이프를 위해 두개의 파일 디스크립터가 생성된다.
[실습 코드1] pipe() 함수 실습 예제
int main(void) { int pipefds[2]; char buffer[1024]; if(pipe(pipefds) == -1) { printf("pipe error") exit(1); } pid_t pid = fork(); if(pid==0) { close(pipefds[0]; write(pipefds[1], "BRAD ASSIGNMENT", 1024); printf("Child Process Write Success"); sleep(2); exit(1); } if(pid > 0) { close(pipefds[1]; read(pipefds[0], buffer, 1024); printf("Parent Process Read Success: %s", buffer); exit(1); } exit(0); } |
반응형