我正在制作一个小的库,它基本上会将程序的标准输出(比如printf())捕获到一个单独的进程/线程中……然后这个进程应该会执行某些任务(比如说将这些捕获的输出写到一个文件中)。...i刚刚开始认真地进行C编程,所以我还在学习。
我想知道最好的方法是什么,我的意思是使用进程或thread...how来捕获这些printf() statements...also,这个库必须处理任何子进程,如果是由programs...the产生的,一般假设是使用它的程序是线程化的,所以我应该采取哪种方法。
发布于 2009-12-30 07:36:50
如果您希望您的程序或库启动程序并捕获其输出,请查看popen(3)。它将为您提供一个文件指针,您可以在其中读取程序的输出。
发布于 2009-12-30 07:31:05
从另一个程序捕获STDOUT的最简单方法是将其通过管道传输到程序的STDIN中(通过命令行">“或"|”操作符)。所以基本上,在你的C库中,你应该使用scanf,或者get,或者任何你正在使用的STDIN函数来读取STDIN。
这是Unix/Linux世界中的一个非常标准的约定-程序以某种格式良好的方式从STDIN读取并写入STDOUT,因此您可以通过简单地向命令行添加管道将不同的程序流水线在一起,例如:
grep "somestring" file1 file2 file3 | cut -d, -f1 | sort | uniqhttps://stackoverflow.com/questions/1977515
复制相似问题