繁体   English   中英

C ++不适用于设备的ioctl

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM