-3

我目前正在从事一个需要我在 C 代码期间调用 Linux 命令的项目。我在其他来源上发现可以使用 system() 命令执行此操作,然后将 Linux shell 的值保存到我的 C 程序中。

例如,我需要将目录更改为

 root:/sys/bus/iio/devices/iio:device1> 

然后输入

 cat in_voltage0_hardwaregain

作为命令。这应该将双精度输出到 C 中。

所以我的示例代码是:

#include <stdio.h>
#include <stdlib.h>

double main() {
   char directory[] = "cd /sys/bus/iio/devices/iio:device1>";
   char command[] = "cat in_voltage0_hardwaregain";
   double output;

   system(directory);
   output = system(command);

   return (0);
}

我知道这可能不是最好的方法,因此非常感谢任何信息。

4

1 回答 1

3

您真正想要做的是打开 C 程序并直接读取文件。使用cdcat通过system调用只是妨碍。

这是一个简单的方法:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int
main(int argc,char **argv)
{
    char *file = "/sys/bus/iio/devices/iio:device1/in_voltage0_hardwaregain";
    FILE *xfin;
    char *cp;
    char buf[1000];
    double output;

    // open the file
    xfin = fopen(file,"r");
    if (xfin == NULL) {
        perror(file);
        exit(1);
    }

    // this is a string
    cp = fgets(buf,sizeof(buf),xfin);
    if (cp == NULL)
        exit(2);

    // show it
    fputs(buf,stdout);

    fclose(xfin);

    // get the value as a double
    cp = strtok(buf," \t\n");
    output = strtod(cp,&cp);
    printf("%g\n",output);

    return 0;
}
于 2016-03-15T21:37:31.153 回答