gpt4 book ai didi

c - 无法从用户空间读取 iio 文件

转载 作者:太空宇宙 更新时间:2023-11-04 01:48:58 24 4
gpt4 key购买 nike

我正在尝试从 C 代码读取以下文件。

文件:/sys/bus/iio/devices/iio\:device0/in_voltage7_raw

但是我得到的文件指针是-1。

使用 cat 命令,它能够读取文件。

但我正尝试从我的代码中读取相同内容,如下所示:

nos_int32 nos_adc_read_port (ADC_PORT_DB *p_port, nos_int32 *data)
{

char file_name[VALUE_MAX];
int value;
char buffer[BUFFER_LENGTH];
char intBuffer[INT_BUFFER_LENGTH];
int fd;

sprintf(file_name, "/sys/bus/iio/devices/iio\\:device0/in_voltage7_raw");

fd = open(file_name, O_RDONLY);

if (fd == -1) {
return(-1);
}
if (read(fd, buffer, BUFFER_LENGTH) == -1) {
return(-1);
}
close(fd);
memcpy(intBuffer, buffer, BUFFER_LENGTH);
intBuffer[INT_BUFFER_LENGTH-1] = '\0';
value = atoi(intBuffer);
*data = value;
return(0);
}

行后:fd = open(file_name, O_RDONLY);

fd 的值为 -1。如何解决?

最佳答案

大多数命令行 shell 使用一些字符来执行特殊操作,如果您尝试将它们用作它们的实际字符,则需要在它们前面加上反斜杠以对它们进行转义。在这种情况下,您的 shell 需要您在访问该文件名时转义冒号。

在 C 中你没有这个问题,所以你可以在你的代码中输入文件名,例如:

"/sys/bus/iio/devices/iio:device0/in_voltage7_raw"

关于c - 无法从用户空间读取 iio 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47713795/

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