我正在寻找一种模仿C / C ++程序中tail -f my_file
行为的方法,即:
- 阅读所有文件(或不 - 该部分不难弄清楚)
- 等待在文件末尾附加字符,然后读取它们
我尝试过浏览尾部源代码,但它确实不透明(可能是因为它根据情况有很多不同的行为)。
我可以想办法,使用seekg
并在重新打开后将文件结束位置与旧值进行比较。在这种情况下重新开放是强制性的吗?
我知道select
FD将无法正常工作,因为磁盘文件总是可以选择的。
另一种方法是将tail
的输出传递给程序,但这意味着没有中断捕获(因为IO总是阻塞)并且非常难看(我不想直接使用管道而是文件)。
应该有一个正确的方法来做到这一点,但我无法弄清楚哪个系统实用程序/手册页会描述这个“规范”实现(fopen
/ fread
或{{ 1}} / open
...)。