在Unix系統中,可以使用socketpair函數來創建一個雙向通信的管道。socketpair函數創建一對相互連接的套接字,并且可以實現雙向通信。
以下是使用socketpair函數創建雙向通信管道的基本步驟:
#include <sys/types.h>
#include <sys/socket.h>
int sockfd[2];
if (socketpair(AF_UNIX, SOCK_STREAM, 0, sockfd) < 0) {
perror("socketpair");
exit(1);
}
if (fork() == 0) {
// 子進程
close(sockfd[0]);
// 向父進程發送數據
write(sockfd[1], "Hello from child", 16);
} else {
// 父進程
close(sockfd[1]);
char buffer[32];
// 從子進程接收數據
read(sockfd[0], buffer, 32);
printf("Received message: %s\n", buffer);
}
通過socketpair函數創建的管道可以實現雙向通信,父子進程或者兩個進程之間可以通過這個管道進行通信。