如何在Unix中读取由另一个进程写入的文件?

时间:2016-03-03 13:11:25

标签: c++ unix

我正在寻找一种模仿C / C ++程序中tail -f my_file行为的方法,即:
- 阅读所有文件(或不 - 该部分不难弄清楚)
- 等待在文件末尾附加字符,然后读取它们

我尝试过浏览尾部源代码,但它确实不透明(可能是因为它根据情况有很多不同的行为)。

我可以想办法,使用seekg并在重新打开后将文件结束位置与旧值进行比较。在这种情况下重新开放是强制性的吗? 我知道select FD将无法正常工作,因为磁盘文件总是可以选择的。

另一种方法是将tail的输出传递给程序,但这意味着没有中断捕获(因为IO总是阻塞)并且非常难看(我不想直接使用管道而是文件)。

应该有一个正确的方法来做到这一点,但我无法弄清楚哪个系统实用程序/手册页会描述这个“规范”实现(fopen / fread或{{ 1}} / open ...)。

0 个答案:

没有答案