我正在进行一个编程项目,该项目需要先确认可移动媒体(例如USB拇指驱动器)的设备身份,然后才能继续执行其他一些很酷的工作。
我的一些 friend 指出我要使用序列号,并且使用udevadm命令进行的初步测试表明应该可以使用。我做了一些额外的检查,看来如果我可以使该软件与libudev一起使用,那么它应该(至少)可以在ubuntu,slackware和gentoo上编译,这将是一个非常不错的好处。
因此,我使用bing查找了一个教程,并获得了Signal 11网站(http://www.signal11.us/oss/udev/),这是一个编写得很好的教程。它实际上似乎拥有我需要的一切。我下载了代码。修复几个特定于平台的错误,然后进行编译。繁荣! Gcc编译没有错误。到现在为止还挺好。
但是,当我尝试运行它时,它会引发一些错误,并且我意识到我需要阅读更多教程,以便我能够充分理解libudev来修复错误并开发出可运行的软件。问题在于,实际上没有其他任何教程(我可以找到),并且在最近的服务器入侵之后,库文档的(唯一已知的)站点kernel.org站点已关闭。
我考虑过只是向system()发出udevadm指令,然后解析结果,但这是将软件组合在一起的一种真正骇人听闻的方法,并且我计划在完成编写后将其发布给社区。
那么如何最好地学习libudev?
最佳答案
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#
关于c - libudev建议,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7432835/