知道接口是静态配置还是使用Debian中C代码中的dhcp
我试图从linux中的C代码中找出接口是配置为静态还是使用dhcp 我知道我可以打开并解析/etc/network/interfaces文件,但我更喜欢更干净的文件,比如我用来获取IP地址和掩码的函数getifaddrs()。因为如果该接口在/etc/network/interfaces文件中配置为dhcp,但稍后用户从命令行将其更改为静态,该怎么办?我会得到一个错误的答案知道接口是静态配置还是使用Debian中C代码中的dhcp,c,linux,kernel,C,Linux,Kernel,我试图从linux中的C代码中找出接口是配置为静态还是使用dhcp 我知道我可以打开并解析/etc/network/interfaces文件,但我更喜欢更干净的文件,比如我用来获取IP地址和掩码的函数getifaddrs()。因为如果该接口在/etc/network/interfaces文件中配置为dhcp,但稍后用户从命令行将其更改为静态,该怎么办?我会得到一个错误的答案 有没有办法向内核询问接口的静态/dhcp当前状态?内核(例如GNU/Linux的Linux部分)不做决定,它不(也不应该)
有没有办法向内核询问接口的静态/dhcp当前状态?内核(例如GNU/Linux的Linux部分)不做决定,它不(也不应该)关心,它只是通过操作系统使用的任何配置系统被告知哪些网络地址与哪些接口相匹配。OpenWRT不是GNU,它的操作方式不同DHCP IP地址请求通常由主机配置的分发脚本或网络管理器服务进行管理。在底层,他们可以使用dhclient守护进程 在Debian中,dhclient守护进程创建文件
/run/dhclient.${interface}.pid
因此,您可以在dhclient设置接口时进行测试
在未完全管理的网络环境中,还应读取该文件并测试进程ID是否仍然有效