如何使用纯 C 捕获另一个进程的输出?你能提供示例代码吗?
编辑:让我们假设Linux。我会对“相当可移植”的代码感兴趣。我想做的就是执行一个命令,捕获它的输出并以某种方式处理它。
有多种选择,但它在一定程度上取决于您的平台。那就是说popen
应该适用于大多数地方,例如
#include <stdio.h>
FILE *stream;
stream = popen("acommand", "r");
/* use fread, fgets, etc. on stream */
pclose(stream);
请注意,这有一个非常具体的用途,它通过运行命令来创建进程acommand
并以某种方式附加其标准输出,以便您的程序可以通过流访问它FILE*
.
如果您需要连接到现有流程,或者需要进行更丰富的操作,您可能需要研究其他设施。 Unix 有多种机制来连接进程 stdout 等。
在windows下你可以使用CreateProcess
用于创建新进程并将其标准输出句柄连接到您想要的 API。 Windows 也支持popen
.
据我所知,没有简单的 C 方法可以做到这一点,因此它总是在某种程度上依赖于特定于平台的 API。
根据您的编辑popen
看起来很理想,它“非常便携”,我认为没有它就没有类似 Unix 的操作系统,事实上它是单一 Unix 规范的一部分,并且POSIX http://www.opengroup.org/onlinepubs/009695399/functions/popen.html,它可以让您完全按照自己的意愿行事:执行流程、获取其输出并进行处理。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)