You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Netlink的LKM项目中strcmp函数使用问题求助

你的核心问题是错误使用了strcmp函数:strcmp("%s\n", "hide")里的第一个参数是格式化字符串,并非实际要判断的Netlink消息载荷,完全起不到比较作用。

正确写法

直接将(char *)nlmsg_data(nlh)作为strcmp的第一个参数,和目标字符串"hide"对比即可:

// 需确保nlmsg_data返回的内容是以'\0'结尾的C风格字符串
if (strcmp((char *)nlmsg_data(nlh), "hide") == 0) {
    // 载荷内容为"hide"时执行的逻辑
}

额外注意事项

  • 必须保证Netlink消息的载荷以空字符('\0')终止,否则strcmp会读取越界,引发内核错误。如果用户态发送的消息未添加终止符,需要在内核中先检查载荷长度,再手动补全'\0'。
  • 若用户态发送的是带换行符的"hide\n",则比较时要写成strcmp((char *)nlmsg_data(nlh), "hide\n") == 0。
  • 建议先验证消息合法性:用nlmsg_ok(nlh, len)确认Netlink消息结构有效,再用nlmsg_len(nlh)检查载荷长度符合预期,避免空指针或越界访问。

内容的提问来源于stack exchange,提问作者Puffy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 00:44:53