使用英特尔ifort编译器启用缓冲I / O到标准输出

我已经阅读了有关使用ifort启用缓冲I / O的英特尔文档(使用-assume buffered_ioFORT_BUFFERED=true ),并且这适用于直接输出到文件。 但是,我们有大量的应用程序正在写入标准输出(例如write(*,*)write(stdout,*) ),这被redirect到一个文件。 在这种情况下,缓冲技术都不起作用。

除了重构代码直接写入文件,有没有办法使用ifort在标准输出上启用缓冲I / O? 例如,gfortran默认启用。

我们在SLES 11上使用ifort 12.0。

更新:感谢您的意见。 我正在调查stdbuf和/或通过一个缓冲程序(如三通)pipe道作为一种解决方法。 到目前为止,我还没有能够做出明显的改变。

更新2:

我试了一下道格拉斯的build议,通过另外一个程序。 发球台和猫都缓冲,面对缓冲似乎由pipe道本身约8K完成。 但是,原始write()调用的开销,再加上pipe道,再加上pipe道程序(tee,cat等)的系统调用太高,无法实现这个解决scheme。