似乎执行成功,但"Error in ioctl: Is a directory"是什么意思?我没有指定任何目录啊

内核编译和嵌入式产品的设计与开发
回复
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

似乎执行成功,但"Error in ioctl: Is a directory"是什么意思?我没有指定任何目录啊

#1

帖子 科学之子 » 2015-10-09 22:53

似乎执行成功,设备指示灯闪烁了,但"Error in ioctl: Is a directory"是什么意思?我没有指定任何目录啊
USB鼠标的灯闪烁了一下,并且似乎重启了(因为鼠标之前没反应)
命令:sudo ./usbreset /dev/bus/usb/003/001
结果:
Resetting USB device /dev/bus/usb/003/001
Error in ioctl: Is a directory

/dev/bus/usb/003/001 是一个root_hub,实际上它插着一个USB鼠标
usbreset源程序:

代码: 全选

/* usbreset -- send a USB port reset to a USB device */

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/ioctl.h>

#include <linux/usbdevice_fs.h>


int main(int argc, char **argv)
{
    const char *filename;
    int fd;
    int rc;

    if (argc != 2) {
        fprintf(stderr, "Usage: usbreset device-filename\n");
        return 1;
    }
    filename = argv[1];

    fd = open(filename, O_WRONLY);
    if (fd < 0) {
        perror("Error opening output file");
        return 1;
    }

    printf("Resetting USB device %s\n", filename);
    rc = ioctl(fd, USBDEVFS_RESET, 0);
    if (rc < 0) {
        perror("Error in ioctl");
        return 1;
    }
    printf("Reset successful\n");

    close(fd);
    return 0;
}

头像
astolia
论坛版主
帖子: 6454
注册时间: 2008-09-18 13:11

Re: 似乎执行成功,但"Error in ioctl: Is a directory"是什么意思?我没有指定任何目录啊

#3

帖子 astolia » 2015-11-03 15:45

对root hub用USBDEVFS_RESET报这个错很正常。
往大了说,用USBDEVFS_RESET出任何错都很正常,自己看看内核文档里是怎么说的
https://www.kernel.org/doc/htmldocs/usb ... ioctl.html
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

Re: 似乎执行成功,但"Error in ioctl: Is a directory"是什么意思?我没有指定任何目录啊

#4

帖子 科学之子 » 2015-12-16 21:07

astolia 写了:对root hub用USBDEVFS_RESET报这个错很正常。
往大了说,用USBDEVFS_RESET出任何错都很正常,自己看看内核文档里是怎么说的
https://www.kernel.org/doc/htmldocs/usb ... ioctl.html
往大了说,用USBDEVFS_RESET出任何错都很正常
意思是指这段警告?
Warning
Avoid using this call until some usbcore bugs get fixed, since it does not fully synchronize device, interface, and driver (not just usbfs) state.
对root hub用USBDEVFS_RESET报这个错很正常。
"很正常"意思是否和那段警告的意思相同?还是有什么肯定的原因?

另外,您是用什么关键词和搜索引擎找到的呢?
回复