[linux] tail和poll无关

不知道是我听错了还是别人说错了,我一直以为 tail -f 是通过poll实现的,而每个ext2(或ext3)文件都支持poll。当文件有新数据时,针对此文件的poll会返回结果。 

昨天想参考kernel是怎么让设备实现poll的,看了ext2文件系统,发现它没提供poll接口。于是自己写了个程序来试试,对着一个ext2文件epoll,结果,即使文件里的数据增加了,epoll_wait也没有任何反应。就socket支持poll,硬盘文件不支持的。那tail -f是怎么实现的?下了coreutils一看,喔,其实是每1秒检查一遍文件,看大小有否变化,如果有,则异步的read该文件,取得新数据,打印到终端......
想想也对,tail命令出现的很早,那时候说不定还没有poll呢,它就用这个简单办法不也解决了问题么。

相关文章

分类

留言:

关于文章

This page contains a single entry by DongHao published on 06 1, 2010 4:47 PM.

没什么可后悔的 was the previous entry in this blog.

[kernel] 在release方法里,而不是flush方法里释放 is the next entry in this blog.

Find recent content on the main index or look in the 存档 to find all content.