socketpair 예제
14 Sep 2017 | C++socketpair
주로 프로세스간 통신을 위해 소켓을 생성할 때 사용하는 방법 중 하나입니다. socketpair() 함수는 주소를 갖지 않는 한 쌍의 소켓을 생성해줍니다. 이 소켓들을 이용해서 부모 프로세스와 자식 프로세스간 통신을 수행할 수 있습니다.
예제 코드
예제 코드는 다음과 같습니다.
#include <cstdio>
#include <unistd.h>
#include <sys/socket.h>
#include <cstring>
#include <sys/wait.h>
int main(int argc, char **argv) {
int ret, socket_fd[2];
char buffer[] = "hello. snowdeer.";
char line[BUFSIZ];
ret = socketpair(AF_LOCAL, SOCK_STREAM, 0, socket_fd);
if (ret == -1) {
perror("socketpair error!!");
return -1;
}
printf("socket 1 : %d\n", socket_fd[0]);
printf("socket 2 : %d\n", socket_fd[1]);
pid_t pid;
int status;
if ((pid = fork()) < 0) {
perror("fork error!!");
} else if (pid == 0) {
write(socket_fd[0], buffer, strlen(buffer) + 1);
printf("Data send : %s\n", buffer);
close(socket_fd[0]);
} else {
wait(&status);
read(socket_fd[1], line, BUFSIZ);
printf("Data received : %s\n", line);
close(socket_fd[1]);
}
return 0;
}