当我尝试运行代码进行用户测试时,无法找到该文件,但是当我在dev中寻找该文件时,便可以找到它。
achraf@achraf:/dev$ ls -l charDevice_part1_0
crw-r--r-- 1 root root 240, 0 Apr 20 00:52 charDevice_part1_0
achraf@achraf:/dev$ ls -l charDevice_part2_0
crw-r--r-- 1 root root 241, 0 Apr 20 00:36 charDevice_part2_0
这就是我在终端上看到的。而且,每当我运行用户测试程序时,我都会得到“文件不存在”,我不知道在usertest.c中是否做错了什么。你能帮我吗?
我的usertest.c:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
int main()
{
int fd;
ssize_t readVar, writeVar;
char myRead[10];
char myWrite[27] = "0";
fd = open("/dev/charDevice_part2_0", O_RDWR);
if(fd == -1)
{
printf("file does not exist\n");
exit(-1);
}
readVar = read(fd, myRead, 10);
printf("Number of bytes read: %zd\n", readVar);
writeVar = write(fd,& myWrite, sizeof(myWrite));
printf("%zd bytes were written to the kernel\n", writeVar);
close(fd);
return 0;
}
答案 0 :(得分:1)
您正在尝试打开设备的读/写功能,但是只有root拥有读/写权限。为了使用户可写这些文件,文件权限必须为666
(所有者,组和其他人的读/写权限)。我认为以下udev
规则可以实现这一目标:
KERNEL=="charDevice_part1_0", MODE="0666"
KERNEL=="charDevice_part2_0", MODE="0666"