【发布时间】:2011-07-07 08:00:54
【问题描述】:
popen 将指定命令的 o/p 存储到文件中。我怎样才能获得类似的功能,但将 o/p 转换为变量(即在 char* 中)?
【问题讨论】:
-
看看这个问题(几乎是你的重复):stackoverflow.com/questions/219138/…
-
@Aleks:对不起,这不是我要问的。
popen 将指定命令的 o/p 存储到文件中。我怎样才能获得类似的功能,但将 o/p 转换为变量(即在 char* 中)?
【问题讨论】:
不,@987654321@ 不会将输出存储到文件中。它指定了一个流,它可能代表磁盘上的一个文件,但也可能位于例如管道或插座。流比文件更抽象。
要拥有管道,您可以使用例如打开管道。 @987654322@,然后在结果管道的正确端调用@987654323@。
【讨论】:
wc -l filename 并将 o/p 存储在变量/缓冲区中。可能吗?
我在变量中找不到任何返回 o/p 的东西。这是有道理的,因为某些命令的 o/p 可能很大,因此为了使行为一致,o/p 存储在文件中。我实际上最终从popen返回的文件中读取。
感谢大家的帮助。
【讨论】:
您可以将启动命令的 STDOUT 和 STDERR 替换为您控制的流
【讨论】:
您想从 C 程序运行 unix 命令并存储输出吗?
如果是这样,那么顺序是调用FILE* pipe = popen("wc -l filename", "r");,然后从FILE* pipe 中读取,就像从使用fopen 打开的文件中读取一样。也就是说,您可以使用 fgets 或 fscanf 之类的函数来读取输出,就像命令的输出在文件中一样。
【讨论】: