프로그래밍/ExampleCode.com

[IPC] pipe 예제 코드

jinkwon.kim 2018. 9. 20. 23:50
728x90
반응형

[IPC] pipe 예제 코드

 

1. 구조

  - 부모 프로세스와 자식 프로세스간에 통신을 할때 사용 한다.

  - 자세한 설명은 다음 포스트 참조 

   [프로세스간 통신] IPC(inter process communication) 종류

 

2. 예제 코드 

#include <stdio.h> 
#include <unistd.h> 
#include <string.h> 
#include <sys/types.h>  

int main(void) {   
	int     fd[2], nbytes, rc = 0;   
    pid_t   childpid;   
    char    string[] = "Hello, world!\n";   
    char    readbuffer[80];    
    
    if ((rc = pipe(fd)) < 0) {     
    	printf("Creating Pipe is Error [%d]\n", rc);
    } if((childpid = fork()) == -1) {     
        perror("fork");     
        return 0;   
    }
      
    if (childpid == 0) {     
        /* 자식 프로세스는 Write할꺼기에 Read FD는 닫아준다 */     
        close(fd[0]);      
        /* Pipe에 메시지 보내기 */     
        write(fd[1], string, (strlen(string)+1));     
        return 0;   
    } else {     
        /* 부모 프로세스는 Read할꺼기에 Write FD는 닫아준다 */     
        close(fd[1]);      
        /* Pipe에서 메시지 읽기 */     
        nbytes = read(fd[0], readbuffer, sizeof(readbuffer));     
        printf("Received Parent string: %s [%d]", readbuffer, nbytes);   
    }    
    return 0; 
}

 

728x90
반응형