Linux& C:System()命令

时间:2016-03-15 21:19:18

标签: c linux system iio

我目前正在开发一个项目,要求我在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);
}

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

1 个答案:

答案 0 :(得分:3)

您真正想要做的是打开C程序并直接读取文件。通过cd电话使用catsystem只是妨碍了。

这是简单的方法:

#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;
}