【发布时间】:2014-08-15 11:48:07
【问题描述】:
我已经对如何将标准输出重定向到 C 中的变量进行了大量研究,但没有成功。我所看到的只是将标准输出重定向到使用 dup2 和 freopen 的文件,这不是我需要的。我想知道是否可以将其重定向到变量而不首先将其重定向到文件?
我使用 ubuntu 和 C 来创建代码。我使用 GCC 4.7.3 作为编译器。
我确实使用了 dup2 和 freopen 并尝试做一些工作,但过了一段时间。我意识到先将其重定向到文件然后再重定向到变量是一个坏主意(因为将写入其中的数据)。我使用了 freopen,但它不起作用,可能是因为 gcc 4.7.3 没有包含它的库。
是否可以将标准输出重定向到变量?如果是,如何?如果你不知道具体怎么做。请给我一个想法,我将成为对此进行研究的人。
编辑帖子以添加我的代码
正如我上面提到的,我确实使用了 dup2 并将标准输出重定向到一个文件。下面的代码显示了我是如何做到的。它工作正常,但我意识到不应该将数据保存到文件中。如果可以只更改我的代码的一部分,我该怎么做才能将标准输出重定向到变量?
这是代码..
char com1[] = "sudo mmm\n";
if (execCom!=NULL)
{
fp=popen(com1,"w");
com = strtok(execCom, "\n");
// walk through other commands that is separated by \n
while( com != NULL )
{
strcpy(comR,"\0");
strcat(comR,com);
strcat(comR,"\n");
fwrite(comR, 1, strlen(comR),fp);
com = strtok(NULL, "\n");
}
pclose(fp);
fclose(out);
}
【问题讨论】:
-
grep 并将
printf更改为sprintf... -
你能描述一下你真正的问题吗?也就是说,不是这个具体的实现问题,而是你试图解决的最终问题。