在P中的popen表现

Dan*_*age 5 c performance system popen

我正在设计一个我计划在C中实现的程序,我对调用外部程序的最佳方式(在性能方面)有疑问.用户将为我的程序提供文件名,然后我的程序将以该文件作为输入运行另一个程序.然后我的程序将处理另一个程序的输出.

我的典型方法是将其他程序的输出重定向到一个文件,然后让我的程序在完成后读取该文件.但是,据我所知,I/O操作非常昂贵,我希望尽可能提高这个程序的效率.

我做了一点看,我找到了popen运行系统命令和抓取输出的命令.这种方法的性能与我刚才描述的方法的性能相比如何?是popen简单地将外部程序的输出写入临时文件,还是将程序输出保存在内存中?

或者,是否有其他方法可以提供更好的性能?

bdo*_*lan 7

在Unix系统上,popen将通过内存管道传递数据.假设数据没有被换出,它将不会命中磁盘.这应该会给你提供尽可能好的性能,而无需修改被调用的程序.

  • 一定要喜欢拖钓,写"然后管道解决方案比写入文件并读回来更糟糕",然后切换到谈论共享内存,然后转到/ dev/shm. (2认同)