socketpair()函数是一个创建一对相互连接的套接字的系统调用,用于在本地进程间进行通信。以下是C语言中socketpair()的常见用法:
- 创建一对互相连接的套接字:
int sockets[2]; if (socketpair(AF_UNIX, SOCK_STREAM, 0, sockets) == -1) { perror("socketpair"); exit(1); } // sockets[0] 和 sockets[1] 是一对互相连接的套接字
- 将socketpair()用于进程间通信:
pid_t child_pid = fork(); if (child_pid == -1) { perror("fork"); exit(1); } if (child_pid == 0) { // 子进程 close(sockets[0]); // 关闭子进程不需要的套接字 // 在 sockets[1] 上进行进程间通信 // ... } else { // 父进程 close(sockets[1]); // 关闭父进程不需要的套接字 // 在 sockets[0] 上进行进程间通信 // ... }
- 将socketpair()用于线程间通信:
void* thread_function(void* arg) { int* sockets = (int*)arg; close(sockets[0]); // 关闭不需要的套接字 // 在 sockets[1] 上进行线程间通信 // ... return NULL; } int main() { pthread_t thread_id; if (pthread_create(&thread_id, NULL, thread_function, sockets) != 0) { perror("pthread_create"); exit(1); } close(sockets[1]); // 关闭不需要的套接字 // 在 sockets[0] 上进行线程间通信 // ... pthread_join(thread_id, NULL); return 0; }
需要注意的是,socketpair()函数是UNIX特有的,不适用于所有操作系统。在Windows系统上,可以使用其他机制来进行进程间通信,如命名管道、共享内存等。