姬長信(Redy)

强制程序在重定向时刷新其标准输出


我有一个封闭的源程序,打印输出到标准输出.我需要解析输出.所以我将输出重定向到fifo(我可以在父进程中读取,分叉和执行二进制文件)使用dup2然后执行程序.问题是文件中的fprintf调用变为缓冲,因为它现在正在写入文件.

我试着在调用exec之前在stdout上用_IONBF调用setvbuf.但问题仍然存在.

为什么setvbuf在我的情况下没有帮助?

我如何强制输出刷新?