gpt4 book ai didi

c - netinet/tcp.h 与 linux/tcp.h 的区别

转载 作者:太空宇宙 更新时间:2023-11-04 08:19:02 31 4
gpt4 key购买 nike

我正在尝试使用在 2.6.37 中添加到 linux 的 TCP 选项 TCP_USER_TIMEOUT

显然我的 C 源代码包括 netinet/tcp.h 而不是 linux/tcp.hTCP_USER_TIMEOUT 是在 linux/tcp.h 中定义的,而不是在 netinet/tcp.h 中定义的,我读了 here用户空间应用程序不应包含来自 linux/ 的任何 header (如本例中的 linux/tcp.h)。但该链接并未解释原因。

最佳答案

您的来源不正确,公告牌很难确定来源。

你不应该包含 linux 目录中的头文件,除非你试图包含 linux 特定的函数,这些函数只能通过包含 linux 目录中的头文件来找到。

关于 TCP_USER_TIMEOUTman-page for TCP关于许多选项的注释“不应在旨在可移植的代码中使用此选项”。虽然它没有在 TCP_USER_TIMEOUT 方面注明这一点,但据我所知,它是一个仅限 linux 的选项。

但是,在这种情况下:

$ grep -r TCP_USER_TIMEOUT /usr/include
/usr/include/netinet/tcp.h:#define TCP_USER_TIMEOUT 18 /* How long for loss retry before timeout */
/usr/include/linux/tcp.h:#define TCP_USER_TIMEOUT 18 /* How long for loss retry before timeout */

至少在我的包含文件中,它存在于两个 文件中。也许您需要更新您的包含。

关于c - netinet/tcp.h 与 linux/tcp.h 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34121434/

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