读取脚本输出变量

时间:2018-09-12 18:37:26

标签: c popen

我正在尝试返回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;
}

1 个答案:

答案 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);
}