ioctl()返回-1的探索
Linux字符设备驱动,写应用程序进行测试时,调用ioctl()返回-1,网上典型的解决办法无用。
errno 的使用
测试程序中添加
#include<errno.h>
#include<string.h>
…
printf("%s\n",strerror(errno));
…
测试程序运行后输出 ioctl:Inappropriate ioctl for device
ioctl:Inappropriate ioctl for device 分析
已知ioctl()执行成功时返回0,否则返回-1并设置全局变量errno的值。
“Inappropriate ioctl for device” 是errno中 ENOTTY 的字符串值,
意味着 ioctl()第一个参数不指向字符设备,即测试程序中打开的设备文件不是字符设备文件。
改正
创建设备节点时,
mknod /dev/mydevice c 230 0(创建字符型设备节点)
问题解决