gpt4 book ai didi

c - 在不断变化的状态下读取内核创建的文件的最佳方式?

转载 作者:行者123 更新时间:2023-11-30 17:45:32 24 4
gpt4 key购买 nike

我正在寻找一种方法来读取内核创建的处于不断变化状态的文件。在 beaglebone 上,获取模拟输入的值只需从文件中读取,我们将其称为 ain_value。获取此值的推荐方法是使用 cat 命令。但是,我希望能够使用 C 读取文件。我当前的处理方式似乎有一些缺陷。如果我尝试以少于一秒的循环读取文件,则会出现一些同步问题。使用 `watch --interval=0.5 'cat ain_value' 我可以获得一致的值,当使用以下代码时,我发现文件无法打开。有没有办法与操作系统同步并使以下代码更可靠?

int AIN_value(char AIN) {
char line[10] = {0};
char BUFFER[35];

snprintf(BUFFER, sizeof(BUFFER), "%s%c", AIN_FILE, AIN);
FILE *fp;
fp = fopen(BUFFER, "r");
if(fp == NULL) {
printf("ERROR: could not open %s\n", BUFFER);
}

printf("\n"); // Temporary fix until we know how to sync file reads.
if (fgets(line, sizeof(line), fp) == NULL) {
printf("ERORR: could not read from %s\n", BUFFER);
}

line[strlen(line) - 1] = '\0';
fclose(fp);
return(atoi(line));
}

附注是,当使用 printf("\n"); 时//临时修复,直到我们知道如何同步文件读取。行我可以获得准确的文件读取,但是如果我删除此行,我会得到错误的值。

最佳答案

如果读取/sys/devices/ocp.2/helper.14/AIN伪文件产生错误数据,则生成该数据的内核代码有错误。除了更正此代码之外,您可能还会看看是否有更好的 API 可以用于读取模拟输入等。

关于c - 在不断变化的状态下读取内核创建的文件的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19602839/

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