gpt4 book ai didi

c - 如何打开在 dev 中创建的文件并在用户空间程序中使用它?

转载 作者:行者123 更新时间:2023-11-30 14:39:59 26 4
gpt4 key购买 nike

当我尝试运行代码来进行用户测试时,我无法找到该文件,但是当我在 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;
}

最佳答案

您正在尝试以读/写方式打开设备,但只有 root 具有读/写权限。要使用户可以写入这些文件,文件权限需要为 666(所有者、组和其他人的读/写)。我认为以下 udev 规则可以实现这一点:

KERNEL=="charDevice_part1_0", MODE="0666"
KERNEL=="charDevice_part2_0", MODE="0666"

关于c - 如何打开在 dev 中创建的文件并在用户空间程序中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55777987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com