我想编写一个不断读取文件的c程序,每当有新行添加到该文件时,它就会通过网络(通过tcp假设)发送给收件人。
最好的方法是什么?
o保持文件打开并在其上执行类似tail -F的操作以继续阅读?
o我自己阅读文件?
我不担心发送网络部分,我需要有最好的方法从文件中获取新行。在那一行,我可能会在发送之前做一些过滤。
答案 0 :(得分:2)
Linux有inotify,OS X有kqueue/kevent,Windows有similar stuff。所有这些都让您的进程阻塞,直到内核通知您对文件的更改。这非常有效,因为您的进程可以睡眠直到实际发生更改,但显然这些接口不可移植。
唯一可移植的方法是定期轮询文件以查看它是否发生变化,但显然效率不高。