2

我正在制作一个小型库,它基本上会将程序的标准输出(例如 printf())捕获到一个单独的进程/线程中......然后这个进程应该执行某些任务(比如说将这些捕获的输出写入文件) ...我才刚刚开始做严肃的 C 编程,所以我还在学习。

我想知道执行此操作的最佳方法是什么,我的意思是使用进程或线程...我如何捕获这些 printf() 语句...如果由程序生成,该库还必须处理任何子进程.. .一般假设是使用它的程序是线程的,所以我应该采取什么样的方法。

4

2 回答 2

4

如果您希望您的程序或库启动程序并捕获其输出,请查看 popen(3)。它将为您提供一个 FILE 指针,您可以在其中读取程序的输出。

于 2009-12-29T23:36:50.420 回答
0

从另一个程序中捕获 STDOUT 的最简单方法是将其通过管道传输到程序的 STDIN(通过命令行“>”或“|”运算符)。因此,基本上,在您的 C 库中,您应该使用 scanf、gets 或您正在使用的任何 STDIN 函数从 STDIN 读取。

这是 Unix/Linux 世界中的一个非常标准的约定 - 程序从 STDIN 读取并以某种格式良好的方式写入 STDOUT,这样您就可以通过简单地将管道添加到命令行来将不同的程序连接在一起,例如:

grep "somestring" file1 file2 file3 | cut -d, -f1 | sort | uniq
于 2009-12-29T23:31:04.527 回答