我正在尝试从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。如何解决呢?
发布于 2017-12-08 21:24:19
大多数命令行shell使用一些字符来执行特殊操作,如果您试图将它们用作实际的字符,则需要在它们前面加上一个反斜杠以对它们进行转义。在这种情况下,您的shell需要您在访问该文件名时转义冒号。
在C中你没有这个问题,所以你可以在你的代码中输入真实的文件名,比如:
"/sys/bus/iio/devices/iio:device0/in_voltage7_raw"
https://stackoverflow.com/questions/47713795
复制相似问题