C libudev返回重复的usb设备

C libudev返回重复的usb设备,c,linux,usb,udev,C,Linux,Usb,Udev,我正在创建一个程序来列出Linux中的所有USB设备(在我的例子中是Ubuntu)。 我一直在学习本教程,并将子系统从“hidraw”更改为“usb” 它列出的设备很好,但它包含重复项 显然,我可以用我的代码删除重复项,但我想知道您是否知道如何以不返回重复项的方式设置设备枚举 如果你想看一下我的代码(没有太大变化),它在 谢谢 对于我的系统,我看到我的USB摄像头复制了,但这是正确的行为,因为它在udev中占用了多个插槽。当我执行udevadm info--attribute walk--nam

我正在创建一个程序来列出Linux中的所有USB设备(在我的例子中是Ubuntu)。 我一直在学习本教程,并将子系统从“hidraw”更改为“usb”

它列出的设备很好,但它包含重复项

显然,我可以用我的代码删除重复项,但我想知道您是否知道如何以不返回重复项的方式设置设备枚举

如果你想看一下我的代码(没有太大变化),它在


谢谢

对于我的系统,我看到我的USB摄像头复制了,但这是正确的行为,因为它在udev中占用了多个插槽。当我执行udevadm info--attribute walk--name=video0时,我看到一个USB端点条目和一个USB设备条目。如果一个设备有多个端点,它无疑会在udev中多次列出。要删除“重复项”,您可以筛选仅存在于父USB设备而非端点中的其他属性


如果您正在扫描USB设备,使用
libusb-1.0
可能更有意义,因为它有一个“更好”的USB设备视图。

谢谢,查看公共属性,并将在以下情况下查看libusb:)如果搜索属性
maxchild=0
,我在查找的级别上找到了一个公共属性,在我看来这几乎是有道理的,但我不喜欢巧合编程。。。你知道它实际上意味着什么吗?感谢
maxchild
是当前设备下存在的USB设备数。查看
linux/drivers/usb/core/devices.c
。除了内核源代码或USB描述符规范之外,我不确定其中是否有任何文档记录。是的,在查看它转储设备信息的方式后,除非我遗漏了什么,
if maxchild==0
if应该是设备节点的叶子。我想这就是我要找的!我会继续读下去以防万一;)谢谢