/*
* http://sosal.tistory.com/
* made by so_Sal
*/
#include<stdlib.h>
#include<stdio.h>
#include<unistd.h>
int main(void){
char buffer[BUFSIZ];
int fd[2];
if(pipe(fd)==-1){
perror("pipe error..\n");
exit(0);
}
pid_t pid;
pid = fork();
if(pid == -1){
perror("fork error..\n");
exit(0);
}
else if(pid==0){ //자식 프로세스의 경우//
write(fd[1],"This letter is from child",BUFSIZ);
sleep(1); //레이스 컨디션 문제 발생. 부모보다 자식이 먼저 fd에 있는 자료를
//가져갈 수 있으므로, 좀 쉬어준다. (fd에 있는 자료는 먼저 가져가는 사람이 임자.)
read(fd[0],buffer,BUFSIZ);
printf("Output of child process :: %s \n\n",buffer);
}
else{ //부모 프로세스의 경우//
read(fd[0],buffer,BUFSIZ);
printf("Output of parent process :: %s \n\n",buffer);
write(fd[1],"This letter is from parent.",BUFSIZ);
}
exit(0);
}
'Linux > Linux_Source' 카테고리의 다른 글
Linux :: 간단한 Port scanner 구현하기 (2) | 2010.01.27 |
---|---|
Linux - ps 프로세스 리스트 출력 프로그램 및 소스 (0) | 2010.01.26 |
Socket - client 소스, 다중 프로세스 채팅방 (1) | 2009.11.07 |
Socket - server 소스. 다중 프로세스 채팅방 (0) | 2009.11.07 |
cp. 파일 복사 프로그램 copy (0) | 2009.11.01 |