Linux 监听套接字父进程到子进程转移 - 示例代码
在 Linux 中,可以使用 fork() 函数创建子进程,然后将监听套接字从父进程转移到子进程,以便子进程可以接受客户端的连接请求。
以下是一个简单的示例代码:
#include <sys/socket.h>
#include <unistd.h>
int main() {
int listenfd = socket(AF_INET, SOCK_STREAM, 0); // 创建套接字
// 绑定和监听套接字
struct sockaddr_in servaddr;
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(8080);
bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr));
listen(listenfd, SOMAXCONN);
// 创建子进程
pid_t pid = fork();
if (pid < 0) {
// fork 失败
perror("fork error");
return -1;
} else if (pid == 0) {
// 子进程
close(listenfd); // 子进程不需要监听套接字
// 处理客户端连接请求
// ...
return 0;
} else {
// 父进程
// 将监听套接字从父进程转移到子进程
return listenfd;
}
}
在上面的代码中,首先创建了一个监听套接字 listenfd,并绑定和监听了该套接字。然后使用 fork() 函数创建了一个子进程,父进程将监听套接字 listenfd 的文件描述符返回,子进程关闭了该文件描述符,然后在子进程中处理客户端连接请求。这样就实现了将监听套接字从父进程转移到子进程的功能。
原文地址: http://www.cveoy.top/t/topic/kTwI 著作权归作者所有。请勿转载和采集!