C语言 需要libudev建议

yfwxisqw  于 2023-02-21  发布在  其他
关注(0)|答案(2)|浏览(164)

我正在着手一个编程项目,需要确认可移动媒体(eidogg. usb拇指驱动器)的设备身份,然后才能继续做一堆其他很酷的事情。
我的一些朋友建议我使用序列号,使用udevadm命令的初步测试表明这应该可以工作。我做了一些额外的检查,似乎如果我可以让软件与libudev一起工作,那么它应该(至少)在ubuntu,slackware和gentoo上编译,这将是一个非常好的好处。
所以我用bing找到了一个教程,找到了Signal 11网站(http://www.signal11.us/oss/udev/),这是一个写得很好的教程。实际上,它似乎有我需要的一切。我下载了代码。修复了几个特定于平台的bug,然后编译。嘣!Gcc编译无误。到目前为止一切顺利。
但是当我试着运行它的时候,它却出现了一些bug,我意识到我需要阅读更多的教程,这样我才能足够好地理解libudev来修复bug,并开发出可以工作的软件。问题是,真的没有任何其他的教程(我能找到),kernel.org网站是(唯一已知的?)库文档站点在最近的服务器受损后关闭。
我曾考虑过只向system()发出udevadm指令,然后解析结果,但这是一种组装软件的非常笨拙的方法,我计划在完成编写后将其发布到社区。
那么,如何最好地为我学习利布捷夫??

fv2wmkja

fv2wmkja1#

libudev是一个非常简单的库,在阅读了您提到的库并使用了API文档之后(网站应该很快)我能够得到我想要的。udevadm是很大的帮助,发出# udevadm info --query=all --name=/path/to/dev后,你会得到所有的信息,udev有关于这个设备,什么是更重要的,这些是属性函数中使用的参数(例如udev_device_get_property_value(device, "ID_VENDOR"))。因此,学习libudev的最佳方法是在signal 11教程、API文档和udevadm信息的帮助下开始使用它。
编辑:libudev目前是systemd的一部分-文档以手册页的形式提供-https://www.freedesktop.org/software/systemd/man/libudev.html#

ffscu2ro

ffscu2ro2#

对于那些期待2023年的人...
正如Maciej所指出的,libudev现在是systemd的一部分。
根据:
https://www.freedesktop.org/software/systemd/man/libudev.html#
...这个库是受支持的,但不应该在新项目中使用。请参见sd-device(3),以获得一个更现代的API的等效替换。
sd设备的文档:
https://www.freedesktop.org/software/systemd/man/sd-device.html#

相关问题