【发布时间】:2018-07-13 00:10:35
【问题描述】:
while (((connfd = accept(listenfd)) != -1){
if (fork() == 0) {
write(connfd, buffer ,strlen(buffer));
close(connfd);
}
}
大家好,我收到了 OS 考试的样题。 假设我有一个使用上述代码处理多个客户端的 TCP 服务器。如问题中所述,其余代码应该是有效的。现在,每次客户端连接到该服务器时,它都会从中读取数据,然后卡住。这个问题的正确答案是因为服务器没有正确关闭与客户端的连接。
我不确定我是否完全明白,不是
关闭(套接字)
够了吗? 就我而言,当一个套接字被一侧关闭时,另一侧读取 EOF 并返回 0。考虑到客户端在读取时卡住了,它不应该到达那个 EOF 并继续前进吗?
【问题讨论】:
标签: c sockets operating-system