[英]How to write a simple WatchDog Timer in C on linux?
TCP KEEPALIVE计时器的默认持续时间为2小时。
知道TCP连接/套接字尽快失效的最佳做法是什么 -
实施WatchDog计时器是最好的方法吗?
如何实现WatchDog计时器呢?
我浏览得非常广泛(可能是我使用了错误的搜索参数)但我还没有看到任何针对Linux GPOS的实现,我看到的是一些基于硬件的嵌入式系统计时器,它们依赖于硬件。
通常,在检测到套接字/连接是否已经死亡后,您会怎么做。
没有办法检测到TCP连接“尽快”死亡。 如果另一侧的主机已经死机,它不再参与TCP连接对话框,并且注意到连接超时的唯一方法。
您可以降低套接字上的保持活动时间以提前“注意”该问题,但这通常不是一个好的解决方案。
如果您正在尝试监控主机,请以适合您的频率发送短“ping”消息。 如果对方在给定的时间间隔内没有回答,您可以声明它“死”。
一旦您注意到死连接,关闭套接字就足以释放与该套接字关联的所有内核资源。
如果您在旁边分配了其他资源(例如会话信息),您还需要释放这些资源。 为此编写一个函数(以及在建立连接时分配这些资源)确实是一个好主意,这样所有的簿记都在同一个位置并且易于检查。
如何跟踪分配的资源完全取决于您。 在一个struct
保存对所有“被释放”资源的引用,并将该结构保存在链接列表或散列中(例如,由套接字fd索引)可以很好地解决。
(无论如何,Linux中的“看门狗定时器”一词用于硬件监控设备。这不是搜索网络/ TCP相关事物的好词。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.