【发布时间】: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 的输出保存到一个变量中,但我该怎么做呢?
【问题讨论】:
这是我的代码:
#include<stdlib.h>
#include<stdio.h>
int main()
{
(void)system("cat json.json | ./jq.exe '.location | {street, city}'");
return 0;
}
我想将 (void)system 的输出保存到一个变量中,但我该怎么做呢?
【问题讨论】:
您必须创建一个pipe 并将系统调用的输出重定向到该管道,然后从该管道读取数据——这就是popen 调用的本质,这意味着您应该只需将system 调用转换为popen 调用,然后从文件描述符中读取到您要填充的变量。
您可以找到有关如何在堆栈溢出时使用 popen 的示例,例如这里; linux command executing by popen on C code
【讨论】:
标准 C 没有为此提供真正的解决方案;只有解决方法。一种是在 system() 中使用 shell 重定向,将输出写入文件,然后使用 fopen()、fread() 和朋友读取该文件。
【讨论】: