【问题标题】:executing a command and getting o/p to a variable执行命令并获取 o/p 到变量
【发布时间】:2011-07-07 08:00:54
【问题描述】:

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

【问题讨论】:

标签: c unix popen


【解决方案1】:

不,@987654321@ 不会将输出存储到文件中。它指定了一个,它可能代表磁盘上的一个文件,但也可能位于例如管道或插座。流比文件更抽象。

要拥有管道,您可以使用例如打开管道。 @987654322@,然后在结果管道的正确端调用@987654323@

【讨论】:

  • 感谢放松。我想要做的是能够执行一个非常简单的事情,即wc -l filename 并将 o/p 存储在变量/缓冲区中。可能吗?
【解决方案2】:

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

感谢大家的帮助。

【讨论】:

    【解决方案3】:

    您可以将启动命令的 STDOUT 和 STDERR 替换为您控制的流

    【讨论】:

      【解决方案4】:

      您想从 C 程序运行 unix 命令并存储输出吗?

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

      【讨论】:

        猜你喜欢
        • 2013-11-27
        • 1970-01-01
        • 1970-01-01
        • 2012-08-30
        • 2016-03-21
        • 1970-01-01
        • 1970-01-01
        • 2019-11-29
        • 1970-01-01
        相关资源
        最近更新 更多