首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >捕获程序输出

捕获程序输出
EN

Stack Overflow用户
提问于 2009-12-30 07:14:59
回答 2查看 653关注 0票数 2

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

我想知道最好的方法是什么,我的意思是使用进程或thread...how来捕获这些printf() statements...also,这个库必须处理任何子进程,如果是由programs...the产生的,一般假设是使用它的程序是线程化的,所以我应该采取哪种方法。

EN

回答 2

Stack Overflow用户

发布于 2009-12-30 07:36:50

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

票数 4
EN

Stack Overflow用户

发布于 2009-12-30 07:31:05

从另一个程序捕获STDOUT的最简单方法是将其通过管道传输到程序的STDIN中(通过命令行">“或"|”操作符)。所以基本上,在你的C库中,你应该使用scanf,或者get,或者任何你正在使用的STDIN函数来读取STDIN。

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

代码语言:javascript
复制
grep "somestring" file1 file2 file3 | cut -d, -f1 | sort | uniq
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1977515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档