分页: 1 / 1

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

发表于 : 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;
}


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

发表于 : 2015-10-12 23:03
lhw828
:em06 这也太复杂

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

发表于 : 2015-11-03 15:45
astolia
对root hub用USBDEVFS_RESET报这个错很正常。
往大了说,用USBDEVFS_RESET出任何错都很正常,自己看看内核文档里是怎么说的
https://www.kernel.org/doc/htmldocs/usb ... ioctl.html

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

发表于 : 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报这个错很正常。
"很正常"意思是否和那段警告的意思相同?还是有什么肯定的原因?

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