我目前正在开发一个项目,要求我在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);
}
我知道这可能不是最好的方法,因此非常感谢任何信息。
答案 0 :(得分:3)
您真正想要做的是打开C程序并直接读取文件。通过cd
电话使用cat
和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;
}