【发布时间】:2018-05-22 15:59:22
【问题描述】:
我正在尝试从 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。怎么解决?
【问题讨论】:
-
尝试使用
sudo运行您的用户空间代码。 -
该反斜杠真的在文件名中还是从您的外壳转义冒号?
-
它可以使用相同的代码读取/sys/class/gpio/gpio70。
-
有一个转义的反斜杠
-
您可以使用
if (fd == -1)中的perror()函数检查发生了什么错误