如何在消息到达时过滤/发送消息

时间:2011-06-16 00:37:26

标签: c filter performance

我想编写一个不断读取文件的c程序,每当有新行添加到该文件时,它就会通过网络(通过tcp假设)发送给收件人。

最好的方法是什么?

o保持文件打开并在其上执行类似tail -F的操作以继续阅读?

o我自己阅读文件?

我不担心发送网络部分,我需要有最好的方法从文件中获取新行。在那一行,我可能会在发送之前做一些过滤。

1 个答案:

答案 0 :(得分:2)

Linux有inotify,OS X有kqueue/kevent,Windows有similar stuff。所有这些都让您的进程阻塞,直到内核通知您对文件的更改。这非常有效,因为您的进程可以睡眠直到实际发生更改,但显然这些接口不可移植。

唯一可移植的方法是定期轮询文件以查看它是否发生变化,但显然效率不高。