首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从用户空间读取iio文件

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

Stack Overflow用户
提问于 2017-12-08 19:46:46
回答 1查看 691关注 0票数 1

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

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

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

使用cat命令可以读取文件。

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

代码语言:javascript
复制
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。如何解决呢?

EN

回答 1

Stack Overflow用户

发布于 2017-12-08 21:24:19

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

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

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47713795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档