执行命令并获取变量的o / p

时间:2011-07-07 08:00:55

标签: c unix popen

popen将指定命令的o / p存储到文件中。我怎样才能获得类似的功能,但将o / p转换为变量(即在char *中)?

4 个答案:

答案 0 :(得分:1)

不,popen()不会将输出存储到文件中。它指定可能表示磁盘上的文件,但也可能是管道或插座。流比文件更抽象。

要使用管道,您可以使用例如管道打开管道。 pipe()然后在生成的管道的正确末端调用fdopen()

答案 1 :(得分:1)

我找不到任何在变量中返回o / p的东西。这有点意义,因为一些命令'o / p可能很大,所以为了使行为一致,o / p存储在文件中。我实际上最终读取了popen返回的文件。

感谢您的帮助。

答案 2 :(得分:0)

您可以使用您控制的流替换已启动命令的STDOUT和STDERR

答案 3 :(得分:0)

是否要从C程序运行unix命令,并存储输出?

如果是,那么序列就是调用FILE* pipe = popen("wc -l filename", "r");,然后从FILE * pipe读取,就像从使用fopen打开的文件中读取一样。也就是说,使用fgetsfscanf等函数来读取输出,就像命令输出在文件中一样。