我延长,打印所有信息到现有的C项目stdout用printf.我想将此信息打印到stdout和日志文件.
如果我是原始项目的贡献者,我会printf用我的自定义日志功能替换所有调用.唉,我不是,所以这是我的问题:
是否可以重定向printf以便单个调用同时打印stdout到文件?
我知道这是一个很长的镜头但是,如果可能的话,我可以获得我想要的东西,而无需修改原始代码.
编辑:感谢您对该tee命令的回答和评论.但是,我正在寻找一种直接在C代码中以自动方式进行操作的方法,这样用户就不必费心使用tee了.
感谢您的关注!
你正在寻找tee命令:
./prog | tee file
Run Code Online (Sandbox Code Playgroud)
这将显示./progin 的输出,stdout它也将存储它file.想想tee作为管道中的三通夹具:)
UPDATE
如果你不想强迫用户考虑使用tee,我只会制作一个shell脚本,它完全按照我上面的说明 - 用 - 调用程序tee- 并让用户只与脚本交互.
如果这对您不起作用,并且您真的想要更改源代码,我看不到任何即时的简单解决方案.您可以编写一个printf()写入两个流的包装器,但是您必须继续将每个调用替换printf()为您的包装器.