Linux 我在编程上需要注意connman何时处理了它的配置文件(以及是否设置了IP)

Linux 我在编程上需要注意connman何时处理了它的配置文件(以及是否设置了IP),linux,systemd,connman,Linux,Systemd,Connman,如何在用户空间程序中等待connman完成Linux引导上的网络配置?(不幸的是,这不是Wants=connman.service) systemd serviceconnman启动后,我的用户空间程序通过systemd服务(Wants=network.target connman.service)启动,它想通过C函数getifaddrs()(例如ifa->ifa\U addr和ifa->ifa\U addr->sa\U family)读取网络配置。现在可能会发生两件事,connman从其配置文

如何在用户空间程序中等待
connman
完成Linux引导上的网络配置?(不幸的是,这不是
Wants=connman.service

systemd service
connman
启动后,我的用户空间程序通过
systemd
服务(
Wants=network.target connman.service
)启动,它想通过C函数
getifaddrs()
(例如
ifa->ifa\U addr
ifa->ifa\U addr->sa\U family
)读取网络配置。现在可能会发生两件事,
connman
从其配置文件中读取一个明确未配置的网络(
IPv4=0.0.0/0.0.0/0.0.0
)或某个网络配置(例如
IPv4=192.168.0.50/255.255.255.0/0.0.0
)。由于某些原因,我的程序必须在某个代码行上等待,直到
connman
完成了对这两种情况之一的设置。我该怎么做

我在
systemd
中发现的所有同步可能性都是
connman
服务启动的时间点(
Wants=connman.service
),这并不意味着它已经处理了配置文件,而是在那之前!!!),其次,
network online.target
,用于配置IP地址(不包括connman配置文件中
0.0.0.0/0.0.0/0.0.0
的情况)



插件:我注意到,在Linux引导过程中,只要控制台上打印“Link up-100Mbps/Full-flow control off”,就会设置一个IP地址。如何在我的用户程序中检测到这一点?

嗯,我找到的只是这个解决方法。“我的服务”的启动脚本查看connman的.config文件并搜索带有“IPv4=”的行,如果该行都是0.0.0.0,我可以立即启动我的应用程序,否则我必须在该脚本中循环,直到ifconfig报告它已为特定网络适配器接口设置了IP地址