我正在着手一个编程项目,需要确认可移动媒体(例如usb拇指驱动器)的设备身份才能继续做一堆其他很酷的事情。
我的一些朋友指出我要使用序列号,使用udevadm命令的初步测试表明这应该有效。我做了一些额外的检查,似乎如果我可以让软件使用libudev然后它应该(最低限度)编译ubuntu,slackware和gentoo,这将是一个非常好的好处。
所以我用bing找到了一个教程并获得了Signal 11站点(http://www.signal11.us/oss/udev/),这是一篇写得很好的教程。它实际上似乎有我需要的一切。我下载了代码。修复几个特定于平台的错误然后编译。繁荣! Gcc编译没有错误。到目前为止一切都很好。
但是当我尝试运行它时,它会引发一些错误,我意识到我需要阅读更多的教程,以便我能够很好地理解libudev以修复错误,并找出工作软件。问题是,在最近的服务器泄露之后,实际上没有任何其他教程(我能找到)和图书馆文档的(仅知道?)站点的kernel.org站点已经关闭。
我考虑过向system()发布udevadm指令然后解析结果,但这是将软件放在一起的一种非常黑客的方式,我打算在写完这篇文章时将它发布给社区。 p>
那么我最好学习libudev ??
答案 0 :(得分:1)
libudev是非常简单的库。在阅读了库之后,你提到并使用了API文档(网站应该很快就会出现)我能够得到我想要的东西。 udevadm是一个很好的帮助,在发出# udevadm info --query=all --name=/path/to/dev
之后,你将获得udev关于这个设备的所有信息,更重要的是,这些是属性函数中使用的参数(例如udev_device_get_property_value(device, "ID_VENDOR")
)。所以学习libudev的最好方法是在signal11教程,API文档和udevadm信息的帮助下开始使用它。
编辑:libudev目前是systemd的一部分 - 文档以手册页的形式提供 - https://www.freedesktop.org/software/systemd/man/libudev.html#