[英]c++ Inappropriate ioctl for device
我正在使用通常连接在/ dev / ttyUSB0上的USB设备
有时,当有更多的USB设备时,它会转到/ dev / ttyUSB1或其他设备
我在/etc/udev/rules.d/myrule.rules下添加了以下行:
SUBSYSTEM ==“ usb”,ATTRS {idVendor} ==“ xxxx”,ATTRS {idProduct} ==“ yyyy”,MODE =“ 0666”,SYMLINK =“ MyUSB”
这很好,当我插入USB设备时,我就准备好了/ dev / MyUSB文件。
问题是,当我尝试使用C ++程序访问该文件时,它无法发送消息:“设备的ioctl不适当”。 如果我也使用/ dev / ttyUSB0,那么一切正常。
我是否需要修改C ++代码以处理SYMLINKS?
提前致谢,
卡尔斯。
这似乎有效。 我使用闪存驱动器进行了测试
在/etc/udev/rules.d/myrule.rules中添加规则使用sudo udevadm控件重新加载规则--reload-rules在程序中
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
int main() {
struct stat buf;
int fd = open("/dev/MyUSB", O_RDWR | O_CREAT);
int k = fstat(fd, &buf);
// The device handle is contained in st_rdev
dev_t dt = buf.st_rdev;
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.