본문 바로가기

[+] Information/[-] Network

[2009/06/28] 예제소스(pipe1.c)

/* pipe1.c */

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

#define BUFSIZE 30

int main(int argc, char **argv)
{
  int fd[2]; // 파이프 리턴값 저장할 배열 선언.
  char buffer[BUFSIZE];
  pid_t pid;
  int state;

  state = pipe(fd); // 파이프 생성
  if(state == -1) {
    puts("pipe() error");
    exit(1);
  }

  pid = fork(); // 프로세스 복사

  if(pid == -1){ // 프로세스 복사가 안된다면
    puts("fork() error");
    exit(1);
  }
  else if(pid==0){ // 자식프로세스 라면
    write(fd[1], "Good\n", 6);
  }
  else{ // 부모 프로세스 라면
    read(fd[0], buffer, BUFSIZE);
    puts(buffer);
  }

  return 0;
}