멀티 프로세스 이용시 문제점
- 프로세스는 메모리가 독립적으로 존재하기 때문에 메모리를 이용하여
프로세스간 데이터를 주고 받는 것은 불가능
- 해결책
: 서로 독립된 프로세스들이 데이터를 주고받기 위해 운영체제가 ‘파이프’를 제공함
파이프 생성 함수
- 하나의 파이프 및 파이프에 대한 두 개의 파일 디스크립터가 생성
- 하나의 파이프를 프로세스들이 공유한다.
- fd : 크기가 2인 int형 배열을 요구
- fd[0] : 함수호출 후 fd[0]에 데이터를 입력받을 수 있는 파일 디스크립터가 담김
(파이프 출구)
- fd[1] : 함수호출 후 데이터를 출력할 수 있는 파일 디스크립터가 담김
(파이프 입구)
파이프의 특징
- 파이프 자체는 fork 함수에 의해 복사되지 않는다.
- 파이프는 방향성이 존재하지 않는다.
양방향 통신을 위한 파이프 생성
- 하나의 파이프는 하나의 용도로 사용한다.
: A 프로세스에서 B 프로세스로 데이터 전송하기 위한 파이프 하나
: B 프로세스에서 A 프로세스로 데이터 전송하기 위한 파이프 하나
- 프로세스는 메모리가 독립적으로 존재하기 때문에 메모리를 이용하여
프로세스간 데이터를 주고 받는 것은 불가능
- 해결책
: 서로 독립된 프로세스들이 데이터를 주고받기 위해 운영체제가 ‘파이프’를 제공함
파이프 생성 함수
- 하나의 파이프 및 파이프에 대한 두 개의 파일 디스크립터가 생성
- 하나의 파이프를 프로세스들이 공유한다.
#include <unistd.h>
int pipe(int fd[2]); 성공시 0, 실패시 -1 리턴
int pipe(int fd[2]); 성공시 0, 실패시 -1 리턴
- fd : 크기가 2인 int형 배열을 요구
- fd[0] : 함수호출 후 fd[0]에 데이터를 입력받을 수 있는 파일 디스크립터가 담김
(파이프 출구)
- fd[1] : 함수호출 후 데이터를 출력할 수 있는 파일 디스크립터가 담김
(파이프 입구)
#include <stdio.h> |
파이프의 특징
- 파이프 자체는 fork 함수에 의해 복사되지 않는다.
- 파이프는 방향성이 존재하지 않는다.
#include <stdio.h> |
양방향 통신을 위한 파이프 생성
- 하나의 파이프는 하나의 용도로 사용한다.
: A 프로세스에서 B 프로세스로 데이터 전송하기 위한 파이프 하나
: B 프로세스에서 A 프로세스로 데이터 전송하기 위한 파이프 하나
#include <stdio.h> |
'TCP/IP' 카테고리의 다른 글
select 함수 (1) | 2011.07.22 |
---|---|
멀티플렉싱(multiplexing) (0) | 2011.07.22 |
양방향 통신(1:1 대화) (0) | 2011.07.19 |
TCP 클라이언트 (0) | 2011.07.07 |
inet_addr()함수, (=inet_aton) (0) | 2011.07.01 |