2012-06-05 3 views
0

최근 IPC에 대해 배우기 시작했고 몇 가지 문제가 있습니다. 잠재적 인 오류를 처리하지 않는파이프를 통한 서버/클라이언트 통신

#include <stdio.h> 
#include <stdlib.h> 
#include <errno.h> 
#include <sys/types.h> 
#include <unistd.h> 


int main(void) 
{ 
    int pfds[2]; 
    char buf[30]; 
    pipe(pfds); 
    if (!fork()) 
    { 
     printf(" CHILD: writing to the pipe\n"); 
     write(pfds[1], "test", 5); 
     printf(" CHILD: exiting\n"); 
     exit(0); 
    } 
    else 
    { 
     printf("PARENT: reading from pipe\n"); 
     read(pfds[0], buf, 5); 
     printf("PARENT: read \"%s\"\n", buf); 
     wait(NULL); 
    } 
    return 0; 
} 

죄송합니다, 나는 단순화를 위해 다음과 같이 썼습니다 :이 같은 파이프를 통해 통신하는 두 개의 프로세스를 생성하는 프로그램을 작성.

이 훌륭한 작동하지만 내 질문은 : 서버/클라이언트 (두 개의 개별 실행 파일 - 부모 프로세스/자식 프로세스 관계가 아닌) 파이프를 통해 통신하는 두 가지 프로그램이있을 가능성이 있습니까? FIFO를 통해 할 수있는 것처럼?

감사합니다.

+0

mkfifo()가 귀하의 필요를 충족시킬 수도 있습니다. – waitingkuo

+0

예, 알고 있습니다. FIFO를 통해이를 수행하는 방법을 알고 있지만 파이프를 통해서도 가능한지 궁금합니다. –

답변

1

일반 파이프는 두 개의 관련 프로세스 만 연결할 수 있습니다. 프로세스에 의해 생성되며 마지막 프로세스가 프로세스를 닫을 때 사라집니다.

두 개의 서로 다른 프로세스간에 통신하려면 명명 된 파이프 (FIFO)를 사용해야합니다.

+0

감사합니다. 확인이 필요했습니다. :) –

관련 문제