假设服务端有段代码,开了两个线程,一个处理客户端连接,一个读取客户端发送的消息。
m_fd = socket(AF_INET, SOCK_STREAM, 0);
bind(...);
listen(...);
pid_t pid;
while (1)
{
m_client_fd = accept(m_server_fd, (sockaddr*)&client_addr, &len);
pid = fork();
if (pid == 0) // 子进程
{
close(m_fd); // 关闭
do_read_from_client(m_client_fd); // 处理m_client_fd客户端发过来的消息
close(m_client_fd); // 关闭
exit(EXIT_SUCCESS);
}
else
{
close(m_client_fd); // 关闭
}
}
/**********************这边还有一个关闭***************************/
close(m_fd); // 关闭
/****************************************************************/
在涉及到多线程的时候,如何正确的关闭文件描述符 fd,我上面的写法对么?
如果 m_server_fd 和 m_fd 是一个东西,只是写错了,那就没啥问题