不断重新加载页面时网络服务器 returns "broken pipe" 错误

web server returns "broken pipe" error when constantly reloading page

我找到了最后几个错误的部分解决方案,我所做的只是创建一个线程池,而不是创建新线程并在每个连接中终止它们。现在我没有那些奇怪的错误,但我遇到了下面列出的问题。

我正在 raspberry pi 上的 C 网络服务器上工作,我能够处理多个网页请求,但是当客户端决定真正快速地重新加载页面时,在几次重新加载之后, Web 服务器崩溃,gdb 给我错误:“broken pipe”。

服务器代码如下:https://hastebin.com/wuzepotiko.c

我认为问题可能出在读取错误处理上,因为当我使用 gdb 时它给我错误:

Thread 13 "webServer" received signal SIGPIPE, Broken pipe.
[Switching to Thread 0xb161f440 (LWP 23260)]
__libc_write (nbytes=0, buf=0x22cc0 <httpResponse>, fd=7)
    at ../sysdeps/unix/sysv/linux/write.c:26
26  ../sysdeps/unix/sysv/linux/write.c: No such file or directory.

我知道这是一大堆代码,但我已经坚持了一段时间了。即使有人能指出正确的方向,我也会非常感激!

我找到了问题的答案。由于 write 函数向内核发送了一个损坏的管道错误,它告诉内核退出进程,我使用了 send 函数,它允许我阻止信号被发送到内核,现在它可以工作了!感谢所有帮助我解决问题的人!