使用socketpair能夠在有親緣關係的進程間(如父子進程)使用域套接字進行通訊。ios
#include <sys/types.h> #include <sys/socket.h> #include <unistd.h> #include <string.h> #include <iostream> using namespace std; int main() { int sockfd[2]; if (socketpair(AF_LOCAL, SOCK_STREAM, 0, sockfd) < 0) { cout << "fail to create socket pair" << endl; return -1; } int iRet = fork(); if (iRet < 0) { cout << "fail to fork child" << endl; return -1; } else if (iRet > 0) { // parent close(sockfd[1]); char acSend[] = "how are you"; write(sockfd[0], acSend, strlen(acSend)); char acRecv[20] = { 0 }; read(sockfd[0], acRecv, sizeof(acRecv)); cout << "parent recv: " << acRecv << endl; } else { // child close(sockfd[0]); char acRecv[20] = { 0 }; read(sockfd[1], acRecv, sizeof(acRecv)); cout << "child recv: " << acRecv << endl; char acSend[] = "fine, thank you"; write(sockfd[1], acSend, strlen(acSend)); } return 0; }