K 개발자
이름 없는 파이프 본문
간단한 파이프 생성
파이프는 두 프로세스 간에 통신을 할 수 있도록 인터페이스를 제공한다.
아무 수식어 없이 그냥 파이프라고 하면 일반적으로 이름 없는 파이프(익명 파이프)anonymous pipe를 의미한다.
이름 없는 파이프는 부모-자식 프로세스 간에 통신을 할 수 있게 해준다.
부모 프로세스에서 fork 함수를 사용해 자식 프로세스를 생성하고, 부모 프로세스와 자식 프로세스 간에 통신하는 것이다.
파이프 생성 : popen(3)
#include <stdio.h>
FILE *popen(const char *command, const char *mode);
// command : 쉘 명령, mode : "r" 또는 "w"
파이프 닫기 : pclose(3)
#include <stdio.h>
int pclose(FILE *stream);
// stream : popen 함수에서 리턴한 파일 포인터
복잡한 파이프 생성
파이프 만들기 : pipe(2)
#include <unistd.h>
int pipe(int fildes[2]);
// fildes[2] : 파이프로 사용할 파일 기술자(2개)
pipe 함수로 통신하는 과정
파이프를 생성하고 나면 일반적으로 fork 함수를 호출해 자식 프로세스를 생성한다.
자식 프로세스는 부모 프로세스가 pipe 함수로 생성한 파일 기술자들도 복사한다.
이 파이프를 이용해 한 프로세스에서는 쓰기를 수행하고, 다른 프로세스에서는 읽기를 수행하면 통신이 되는 것이다.
'유닉스(Unix) > 시스템 프로그래밍' 카테고리의 다른 글
시스템 V IPC의 공통 요소 (0) | 2021.08.19 |
---|---|
이름 있는 파이프 (0) | 2021.08.19 |
sigaction 함수의 활용 (0) | 2021.08.19 |
시그널 집합 (0) | 2021.08.19 |
시그널 기본 처리 (0) | 2021.08.19 |
Comments