假设我open()
在 *nix 机器上有一个文件,然后点击eof
. 但是当我open()
编辑它时,它仍在编写中。
有没有办法检测文件是否自open()
-time以来增长?还是我需要close()
重新open()
检查?
有没有一种方法可以在eof
没有close()
ing 和reing 的情况下阅读旧的open()
?
假设我open()
在 *nix 机器上有一个文件,然后点击eof
. 但是当我open()
编辑它时,它仍在编写中。
有没有办法检测文件是否自open()
-time以来增长?还是我需要close()
重新open()
检查?
有没有一种方法可以在eof
没有close()
ing 和reing 的情况下阅读旧的open()
?
虽然不可移植,但在 linux 上,您可以使用 inotify 系统并监视您感兴趣的文件的文件关闭事件。请参阅http://www.ibm.com/developerworks/library/l-inotify/。
请注意,仅仅因为文件被其他进程关闭并不一定意味着它的大小增加了。如果您关心文件大小的变化,stat()
请在关闭文件之前使用它来检查大小变化。请参阅如何确定 C 中文件的大小?