Unix-是否可以检测USB硬件何时插入计算机

Unix-是否可以检测USB硬件何时插入计算机,unix,usb,kernel,driver,Unix,Usb,Kernel,Driver,我想在我将arduino硬件连接到笔记本电脑时自动启动一个程序 我知道这是有可能的,因为当我连接ipod时,Itunes就是这样工作的 对不起,如果我的问题太宽泛,那是因为我对USB技术和驱动程序开发缺乏认识。我会根据答案澄清我的问题 我发现了一个关于dmesg()的主题,但是在我的macosx上,响应与示例不同(我有很多代码签名错误,并且有很多输出信息)。所以我假设这取决于操作系统 我的问题是,是否有一种标准化的方法来检测USB端口,或者它是否依赖于操作系统(我的问题仅针对unix系列) 目前

我想在我将arduino硬件连接到笔记本电脑时自动启动一个程序

我知道这是有可能的,因为当我连接ipod时,Itunes就是这样工作的

对不起,如果我的问题太宽泛,那是因为我对USB技术和驱动程序开发缺乏认识。我会根据答案澄清我的问题

我发现了一个关于dmesg()的主题,但是在我的macosx上,响应与示例不同(我有很多代码签名错误,并且有很多输出信息)。所以我假设这取决于操作系统

我的问题是,是否有一种标准化的方法来检测USB端口,或者它是否依赖于操作系统(我的问题仅针对unix系列)

目前,我找到的解决方案是使用cron扫描tty。文件并检查它是否能响应我的信号,如果可以,我启动我的程序。但这确实是一个肮脏而激进的解决方案

我没有任何关于它的明确文件。但那只是因为我不知道在哪里可以找到文档。我知道usbconfig可以提供有关设备的信息,但它并没有预装到mac机器中

那么,当连接硬件时,内核能提供信号吗?我应该在哪里向计算机提供硬件信息?它是特定于操作系统的吗?我在哪里可以找到我想要的文档(我还没有找到一个明确的研究方法)


非常感谢您的帮助。谢谢你的回复

不幸的是,USB设备通知是特定于操作系统的。关于这个问题没有官方标准,因此每个实现都是不同的,即使在不同的类Unix系统中也是如此

在Linux上,内核通过(IIRC)open通知守护进程,然后
udev
可以使用各种方法通知其余的用户空间。我相信FreeBSD也有同样的用途——我希望OSX也会有自己的方法来做到这一点


您可能能够使用中的设备枚举功能构建跨平台解决方案。它是跨平台的,并且有多种编程语言的绑定,因此您应该能够启动一个小守护进程来完成这项工作…

谢谢!你的回答真的帮助了我。我会先在libusb上试一下,因为我在freeBSD上。顺便说一句,你的知识真是太棒了!