将(void)系统的输出保存到变量(C)中

时间:2014-04-23 21:05:03

标签: c system exe

这是我的代码:

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

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

我想将(void)系统的输出保存到变量中但是我该怎么做呢?

2 个答案:

答案 0 :(得分:1)

您必须创建一个pipe并将系统调用的输出重定向到该管道,然后从管道中读取数据 - 这就是popen调用基本上所做的事情,表示您应该只将system调用转换为popen调用,然后从文件描述符中读取要填充的变量。

你可以在这里找到关于如何在堆栈溢出上使用popen的例子; linux command executing by popen on C code

答案 1 :(得分:0)

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