3

我正在着手进行一个编程项目,该项目需要确认可移动媒体(例如 USB 拇指驱动器)的设备身份,然后才能继续执行其他一些很酷的事情。

我的一些朋友建议我使用序列号,并且使用 udevadm 命令进行的初步测试表明这应该可以工作。我做了一些额外的检查,看来如果我能让软件与 libudev 一起工作,那么它应该(最少)在 ubuntu、slackware 和 gentoo 上编译,这将是一个非常好的好处。

所以我用 bing 找到了一个教程,并得到了 Signal 11 网站 (http://www.signal11.us/oss/udev/),这是一个写得很好的教程。它实际上似乎拥有我需要的一切。我下载代码。修复几个特定于平台的错误,然后编译。繁荣!Gcc 编译没有错误。到目前为止,一切都很好。

但是当我尝试运行它时,它引发了一些错误,我意识到我需要阅读更多的教程,以便我能够很好地理解 libudev 以修复错误并生成工作软件。问题是真的没有任何其他教程(我能找到),并且作为库文档的(唯一已知的?)站点的 kernel.org 站点在最近的服务器受损后关闭。

我考虑过只向 system() 发出 udevadm 指令,然后解析结果,但这是将软件组合在一起的一种非常糟糕的方式,我计划在完成编写后将其发布给社区。

那么如何最好地学习libudev?

4

1 回答 1

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#

于 2011-09-15T18:21:08.663 回答