我有代码可以打开一个 libusb 设备,进行一些异步传输,然后退出。有时最后的清理代码可以解决,我可以重新运行程序而不会出现问题,但有时
会libusb_cancel_transfer
返回LIBUSB_ERROR_PIPE
,此后设备不会出现在libusb_get_device_list
程序的任何后续执行返回的列表中。
可以通过拔下设备并重新插入同一端口来解决问题,但这是不可接受的。我至少需要某种方法来从软件的不良状态中恢复,但理想情况下这种情况永远不会发生。
如果这个问题可能与平台相关,我正在运行 MacOSX 10.9.5,并且该程序是使用 llvm 编译器构建的 C++。