【问题标题】:How to capture the output of a bash script from a C program? [duplicate]如何从 C 程序中捕获 bash 脚本的输出? [复制]
【发布时间】:2023-03-11 23:21:01
【问题描述】:

我想将 C 程序调用的 bash 脚本的输出保存到 C 程序中声明的变量中。我搜索并尝试使用system成功调用脚本,我尝试了这个,但它不起作用:

char* a;
system("a=`ls`");
printf("%s",a);

【问题讨论】:

  • bash 变量与您在 C 应用程序中定义的任何变量完全没有关系。
  • 您分配给与您的 C 变量无关的 shell 变量。您将需要创建一个管道并将孩子的 STDOUT 设置为该管道的写入端。这意味着您将无法使用system
  • 一种方法,虽然很麻烦,但是将脚本输出到文件中。然后,在脚本退出后,C 程序打开该文件进行输入并读入脚本的输出。类似于:system("ls > /tmp/LS_Output");文件 * pLSO = fopen("LS_Output", "r");

标签: c linux bash


【解决方案1】:

使用 popen() 系统调用。您可以将 cmd 作为参数传递。当函数返回时,您将获得作为文本的命令输出。希望这可以帮助。

【讨论】:

  • 之前已经对这个问题给出了相同内容的答案(参见顶部标记为已接受的答案)。
猜你喜欢
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-12
  • 1970-01-01
相关资源
最近更新 更多