【发布时间】:2010-07-28 06:27:04
【问题描述】:
有两种非常简单的方法可以让一个程序向另一个程序发送数据流:
- Unix 管道,或 TCP 套接字,或类似的东西。这需要消费者程序不断关注,否则生产者程序会阻塞。即使增加缓冲区通常很小的默认值,这仍然是一个大问题。
- 普通文件 - 生产者程序附加
O_APPEND,消费者只是在方便时读取任何可用的新数据。这不需要任何同步(只要磁盘空间可用),但 Unix 文件只支持在末尾截断,而不是在开头截断,因此它会填满磁盘直到两个程序退出。
有没有一种简单的方法可以同时使用,将数据存储在磁盘上直到被读取,然后释放?显然程序可以通过数据库服务器或类似的东西进行通信,并且没有这个问题,但我正在寻找与普通 Unix 管道完美集成的东西。
【问题讨论】: