K 개발자

이름 없는 파이프 본문

유닉스(Unix)/시스템 프로그래밍

이름 없는 파이프

ddingz 2021. 8. 19. 16:40

간단한 파이프 생성

파이프는 두 프로세스 간에 통신을 할 수 있도록 인터페이스를 제공한다.
아무 수식어 없이 그냥 파이프라고 하면 일반적으로 이름 없는 파이프(익명 파이프)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