/* pipe2.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!", 6);
sleep(2);
read(fd[0], buffer, BUFSIZE);
printf("자식 프로세스 출력 : %s \n\n", buffer);
}
else{ /* 부모 프로세스의 경우 */
read(fd[0], buffer, BUFSIZE);
printf("부모 프로세스 출력 : %s \n", buffer);
write(fd[1], "Really Good", 12);
sleep(3); /* 큰의미 없음 : 출력 좋게 하려고 */
}
return 0;
}
/* pipe3.c */
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#define BUFSIZE 30
int main(int argc, char **argv)
{
int fd1[2], fd2[2];
char buffer[BUFSIZE];
pid_t pid;
if(pipe(fd1)==-1 || pipe(fd2)==-1) {
puts("pipe() error");
exit(1);
}
pid = fork();
if(pid ==-1){
puts("fork() error");
exit(1);
}
else if(pid==0){
write(fd1[1], "Good!", 6);
read(fd2[0], buffer, BUFSIZE);
printf("자식 프로세스 출력 : %s \n\n", buffer);
}
else{
read(fd1[0], buffer, BUFSIZE);
printf("부모 프로세스 출력 : %s \n", buffer);
write(fd2[1], "Really Good", 12);
sleep(1);
}
return 0;
}
'[+] Information > [-] Network' 카테고리의 다른 글
[2009/07/03] 가위 바위 보 게임 예제소스(ipcgame_serv.c, ipcgame_clnt.c) (0) | 2009.07.03 |
---|---|
[2009/07/03] 가위 바위 보 게임 (0) | 2009.07.03 |
[2009/07/03] 프로세스간 통신2 (0) | 2009.07.03 |
[2009/06/28] 예제소스(pipe1.c) (0) | 2009.06.28 |