当前位置: 技术问答>linux和unix
读文件的问题,高手请进
来源: 互联网 发布时间:2015-07-10
本文导语: 最近开发一个项目,程序要监视多个文件的增加,并对增加的内容进行处理。 我希望有一种机制,可以同时监视多个文件,在文件没有新增数据的时候阻塞,某个文件新数据到来的时候程序得到通知。 本来想用select...
最近开发一个项目,程序要监视多个文件的增加,并对增加的内容进行处理。
我希望有一种机制,可以同时监视多个文件,在文件没有新增数据的时候阻塞,某个文件新数据到来的时候程序得到通知。
本来想用select调用提供的多路复用做,但是发现有问题:
程序启动时把文件指针移到文件末尾,这样可以监视程序启动后新增的部分,而不关心以前的内容。但是select在文件到末尾的时候会返回,所以就会出现在没有数据到来的时候,程序还是在一直循环读,这样消耗了大量CPU时间。
不止有没有其他的机制,可以在读到文件末尾的时候阻塞,直到有新数据添加到文件尾为止。
我希望有一种机制,可以同时监视多个文件,在文件没有新增数据的时候阻塞,某个文件新数据到来的时候程序得到通知。
本来想用select调用提供的多路复用做,但是发现有问题:
程序启动时把文件指针移到文件末尾,这样可以监视程序启动后新增的部分,而不关心以前的内容。但是select在文件到末尾的时候会返回,所以就会出现在没有数据到来的时候,程序还是在一直循环读,这样消耗了大量CPU时间。
不止有没有其他的机制,可以在读到文件末尾的时候阻塞,直到有新数据添加到文件尾为止。
|
参看tail的源代码
另外,2.4的内核据说支持fcntl的F_NOTIFY,
另外,2.4的内核据说支持fcntl的F_NOTIFY,
|
通过判断文件最后修改时间,你可以考虑考虑!!