当前位置:  开发笔记 > 运维 > 正文

如何使用C捕获另一个进程的输出?

如何解决《如何使用C捕获另一个进程的输出?》经验,为你挑选了1个好方法。

如何使用纯C捕获另一个进程的输出?你能提供示例代码吗?

编辑:让我们假设Linux.我会对"非常便携"的代码感兴趣.我想要做的就是执行一个命令,捕获它的输出并以某种方式处理它.



1> Logan Capald..:

有几种选择,但它在某种程度上取决于您的平台.那说popen应该在大多数地方工作,例如

#include 

FILE *stream;
stream = popen("acommand", "r");

/* use fread, fgets, etc. on stream */

pclose(stream);

请注意,这有一个非常具体的用途,它通过运行命令创建进程,acommand并以一种方式附加其标准,以便通过流可以从程序访问它FILE*.

如果您需要连接到现有流程,或需要执行更丰富的操作,则可能需要查看其他工具.Unix有各种机制来连接进程stdout等.

在Windows下,您可以使用CreateProcessAPI创建一个新进程,并将其标准输出句柄连接到您想要的.Windows也支持popen.

虽然我知道没有简单的C方法可以做到这一点,所以它总是在某种程度上取决于特定于平台的APis.

根据您的编辑popen看起来很理想,它"非常便携",我认为没有像操作系统那样的unix,它确实是单Unix规范和POSIX的一部分,它可以让你做到你想要的,执行一个进程,获取其输出并处理它.

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有