【问题标题】:Save output from (void) system into a variable (C)将(void)系统的输出保存到变量(C)中
【发布时间】:2023-03-28 03:50:02
【问题描述】:

这是我的代码:

#include<stdlib.h>
#include<stdio.h>

int main()
{
(void)system("cat json.json | ./jq.exe '.location | {street, city}'");
return 0;
}

我想将 (void)system 的输出保存到一个变量中,但我该怎么做呢?

【问题讨论】:

标签: c system exe


【解决方案1】:

您必须创建一个pipe 并将系统调用的输出重定向到该管道,然后从该管道读取数据——这就是popen 调用的本质,这意味着您应该只需将system 调用转换为popen 调用,然后从文件描述符中读取到您要填充的变量。

您可以找到有关如何在堆栈溢出时使用 popen 的示例,例如这里; linux command executing by popen on C code

【讨论】:

    【解决方案2】:

    标准 C 没有为此提供真正的解决方案;只有解决方法。一种是在 system() 中使用 shell 重定向,将输出写入文件,然后使用 fopen()fread() 和朋友读取该文件。

    【讨论】:

      猜你喜欢
      • 2011-11-10
      • 2012-06-21
      • 2011-01-25
      • 2021-11-12
      • 1970-01-01
      • 2021-07-25
      • 1970-01-01
      • 2011-12-31
      • 1970-01-01
      相关资源
      最近更新 更多