gpt4 book ai didi

C http 服务器在不可预测的时间后停止

转载 作者:行者123 更新时间:2023-11-30 15:33:24 25 4
gpt4 key购买 nike

我正在用C为我的OpenWrt路由器编写一个自定义HTTP服务器。它使用 uclibc 库。我只使用一个静态缓冲区,我非常小心不要溢出,并且不涉及多线程。它不包含任何复杂的数据结构,它的作用是:

  • listen()位于套接字上
  • accept()之后读取请求
  • 通过向预定义远程服务器(不是代理)发送http请求来获取html页面
  • 通过接受的连接发送结果,并关闭两者。

程序会在一段时间后停止运行(可能是在收到第一个请求时,或者在重压下工作超过 2 小时后)。我没有通过控制台收到任何错误消息或任何其他信息,程序只是停止了。我看过它,正如预期的那样,它在运行时不会消耗越来越多的内存...

  • 如果内核认为它滥用了 CPU,是否有可能停止它?我该如何克服这个问题?
  • 在 C 套接字编程中是否有一些已知会导致此类崩溃的怪癖?
  • 使用 OpenWrt 的 Barrier Bracker(前沿)分支是否会导致稳定性问题?虽然路由器本身永远不会停止工作......

我从哪里开始寻找问题的根源?

最佳答案

好的,首先,我要感谢大家的帮助。在编写了大量 netcat 测试程序之后,我已经查明了问题所在。如果客户端在最后一次写入或读取发生之前关闭连接,则程序将崩溃 - 结束而没有任何错误消息。写入或读取会引发 SIGPIPE 信号,如果不手动处理,默认情况下该信号会使程序崩溃...更多信息:How to prevent SIGPIPE or prevent the server from ending?

关于C http 服务器在不可预测的时间后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23725798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com