我正在用C语言编写一个需要与虚拟以太网设备连接的程序。以下是我可以在Shell中编写的一些命令示例,我想将它们合并到我的C程序中:
ip link add A type veth peer name B
ip addr add 172.17.42.1/16 dev A
ip link set A up
ip link set B netns 123
我做了一些搜索,但是我找不到执行这种操作所需的命令/库。有人能指出我正确的方向吗?
答案 0 :(得分:3)
您无法在便携式C11(或便携式C99)中创建任何虚拟以太网设备,因为C标准没有以太网设备的概念。
您需要一些操作系统支持,而您的问题将变为特定于操作系统。
如果您的目标是Linux操作系统,则可以使用strace(1)了解ip
命令执行的system calls。
但是,您可以简单地编写一些特定于应用程序的shell脚本(运行上述命令)并小心地使用system(3)或popen(3)来运行它(甚至直接使用fork(2),execve(2),pipe(2),poll(2)等...阅读Advanced Linux Programming了解更多信息。害怕潜在的code injection,如果您构建命令字符串,请检查输入的任何输入数据。
在ysdx评论时,请查看rtnetlink(7)