我有一项从多用户启动的服务,并使用一些串行设备执行大量操作。首先要做的事情之一是搜索它关心的串行设备并打开它们。由于串行设备来来去去,它打开的设备是可配置的,并且在开始时它会遍历 /dev/serial/by-id ,寻找与配置模式匹配的东西。
有时,它在启动时找不到匹配项。如果我稍后重新启动服务器,它确实会找到它们。
我可以在代码中做一些奇怪的事情,比如轮询 /dev/serial 直到它有内容,但这感觉很笨拙和种族化。我真的很想推迟启动服务,直到 /dev/serial/by-id 的设置完成。我如何能?
如果它们在系统启动时不存在,则服务预计在没有它们的情况下继续运行。所以我需要知道检测何时完成;我不能一直循环直到它们出现。也许他们不会。
答案1
似乎没有人知道如何做到这一点,我最终编写了一个挂起的线程,定期检查 /dev/serial/by-id ,然后收获在那里找到的内容。它有效,但我必须这样做很烦人。如果有人知道的话,仍然对更好的方法感兴趣。