我正在尝试返回shell脚本的值。从我阅读的内容来看,我可以使用popen,但是由于某种原因,我无法使代码正常工作。现在,当我运行代码时,我得到的是垃圾字符,而不是我想要的浮点数。
shell脚本的值是一个浮点数。
我想返回bash脚本的值,以便可以将shell脚本中返回的值用作C代码的变量。
#include <stdio.h>
//Settings Variables
float upload_speed;
float download_speed;
int main(int argc, char **argv)
{
FILE *upload_speed;
//Runs shell script on code and returns data
upload_speed = popen("./Filter_Data.sh Upload", "r");
printf("return value is: %s", upload_speed);
return 0;
}
答案 0 :(得分:3)
popen
函数返回指向FILE
对象的指针,该对象代表已执行程序的输入和输出。您将其视为不是的字符串(即char *
)。
您需要读取文件对象以获取其输出:
FILE *outputFile;
char outputStr[80];
outputFile = popen("./Filter_Data.sh Upload", "r");
if (outputFile) {
fgets(outputStr, sizeof(outputStr), outputFile);
printf("output is: %s", outputStr);
pclose(outputFile);
}