Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在路径:/dev/targetdev处打开设备文件?_C_Linux_Linux Kernel_Linux Device Driver - Fatal编程技术网

C 如何在路径:/dev/targetdev处打开设备文件?

C 如何在路径:/dev/targetdev处打开设备文件?,c,linux,linux-kernel,linux-device-driver,C,Linux,Linux Kernel,Linux Device Driver,我有一个关于在linux内核中编写模块的家庭作业。我已经为字符驱动程序声明了2个函数(打开和读取)。我可以用“sudo cat”命令正常运行。 但当我使用user_test.c文件测试这个模块时,它不起作用。无法在“/dev/targetdev”处打开设备文件。(在我的例子中,targetdev=“vchar_dev”)。 请帮我修一下。 谢谢 //模块文件中的代码 静态int vchar_驱动程序_打开(结构索引节点*索引节点,结构文件*翻转){ printk(“打开成功\n”); 返回0;

我有一个关于在linux内核中编写模块的家庭作业。我已经为字符驱动程序声明了2个函数(打开和读取)。我可以用“sudo cat”命令正常运行。 但当我使用user_test.c文件测试这个模块时,它不起作用。无法在“/dev/targetdev”处打开设备文件。(在我的例子中,targetdev=“vchar_dev”)。 请帮我修一下。 谢谢

//模块文件中的代码
静态int vchar_驱动程序_打开(结构索引节点*索引节点,结构文件*翻转){
printk(“打开成功\n”);
返回0;
}
//user_test.c中的代码
#定义设备节点“/dev/vchar\u dev”
int open_chardev(){
int fd=打开(设备节点,O_RDWR);
如果(fd<0){
printf(“无法打开设备文件\n”);
出口(1);
}
返回fd;
}

O_RDWR
是否可以尝试只读?请显示更多代码,然后只显示两个小函数片段。如何检测
它无法打开设备
?请具体说明。
open
调用返回的
fd
是否低于零?为什么你在打开
/dev/vchar_dev
时提到
/dev/targetdev
O_RDWR
顾名思义就是
O_读写
@LinhHa O_RDWR是读写的。使用O_rdonly您应该检查
errno
(或使用
perror
strerror
)的值,了解有关
open()
失败原因的更多信息。听起来可能很愚蠢,但您使用了“sudo cat”,这意味着您需要特定的权限才能访问此文件。您是否使用相同的用户/权限运行程序?您可能需要对文件进行一些访问权限调整,以允许普通用户打开它。