TIL/os
PIPE 양방향 통신하기
DingCoDing
2022. 10. 4. 01:23
반응형
#include <stdio.h>
#include <unistd.h>
#include <sys/times.h>
#include <limits.h>
#include <stdlib.h>
#include <time.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <string.h>
int main() {
int fd1[2], fd2[2];
pid_t pid;
char buf[257];
int len, status;
if(pipe(fd1)== -1){
perror("pipe");
exit(1);
}
if(pipe(fd2)==-1){
perror("pipe");
exit(1);
}
switch(pid = fork()){
case -1 :
perror("fork");
exit(1);
break;
case 0:
close(fd1[1]);
close(fd2[0]);
write(1, "Child Process:", 15);
len = read(fd1[0], buf, 256);
write(1, buf, len);
strcpy(buf, "Good\n");
write(fd2[1], buf, strlen(buf));
break;
default:
close(fd1[0]);
close(fd2[1]);
buf[0] = '\0';
write(fd1[1], "Hello\n", 6);
write(1, "Parent Process:", 15);
len = read(fd2[0], buf, 256);
write(1, buf, len);
waitpid(pid, &status, 0);
break;
}
return 0;
}
반응형