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; }