我可以在不使用system()命令的情况下在C中读/写路由表吗?

时间:2011-06-15 13:28:21

标签: c linux networking routes

我有用C编写的代码。我想使用存储在路由表中的C代码信息。有可能吗?

3 个答案:

答案 0 :(得分:9)

您还可以运行“strace route add ...”来查看route命令的执行方式。

在我的系统上,它使用ioctlSIOCADDRT。稍微搜索了一些sample code

奇怪的是,我找到的最好的文档来自IBM's AS400 man pages

如果您只想阅读路由表,可以打开并阅读/proc/net/route。 (同样,strace表明这是route命令的作用。)十六进制数是机器端格式的32位IP地址。试试cat /proc/net/route

答案 1 :(得分:5)

您可以打开netlink套接字并发送路由更新消息。关于如何执行此操作有an article

答案 2 :(得分:1)

如果只想查询路由表,请尝试读取文件/proc/net/route。它适用于我的系统。