不适合设备的ioctl
c++ Inappropriate ioctl for device
我使用的USB设备通常连接在/dev/ttyusb0
有时当有更多的USB设备时,它会转到/dev/ttyusb1或其他
我在/etc/udev/rules.d/myrule.rules下添加了以下一行:
SUBSYSTEM=="usb", ATTRS{idVendor}=="xxxx", ATTRS{idProduct}=="yyyy",模式= " 0666 ",符号链接="MyUSB"
这很好,当我插入我的USB设备时,我得到/dev/myusb文件准备好了。
问题是,当我尝试使用我的c++程序访问这个文件时,它不工作发送消息:"不适合设备的ioctl"。如果我使用/dev/ttyusb0,它也是可用的,一切都工作得很好。
我必须修改我的c++代码来处理SYMLINKS吗?
提前感谢,
卡莱斯。
这似乎行得通。我用u盘测试了一下
在/etc/udev/rules.d/myrule.rules中添加规则使用sudo udevadm control——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;
}
相关文章:
- 我适合在我的构建系统中使用 shell 脚本而不是AX_CHECK_COMPILE_FLAG吗?
- 指数近似不适合小输入或大输入
- 使用"JSON for Modern C++"库检测整数不适合指定类型?
- 为什么 std:: setw 和 std::hex 不适合下面的代码?
- 将 32 位浮点数和不强制转换的 32 位整数与双精度进行比较,当其中一个值可能太大而无法完全适合另一种类型时
- 此方法是否不适合在 std::unordered_map 中使用 2D 坐标作为键
- 在x86_64模式下,64 位数字不适合寄存器整数
- 为什么我的数据不适合CUDA纹理对象
- 以下等级表达式不适合Boost Regex
- C 尺寸不适合模板
- QTableView长标题字符串不适合
- 建设者的设计模式不适合我
- 从一个程序到另一个程序的管道输出不适合这个特定的程序
- QSortFilterProxyModel不适合我
- 不适合设备的ioctl
- c++ - OOP实现链表,我不知道为什么添加到末尾不适合我,请建议
- 初始目录不适合CFileDialog
- 重定位值不适合24位
- 为什么内联SQL不适合包含在应用程序中
- OpenCV中的视频显示窗口大小不适合视频