2011-06-16 27 views
1

我想編寫一個持續讀取文件的c程序,並且每當將新行添加到該文件時,它會通過網絡(通過tcp假設)發送給收件人。如何在他們到達時過濾/發送消息

這樣做的最佳方法是什麼?

o保持文件打開並做一些類似於尾巴的工作 - 繼續閱讀?

o自己讀取文件?

我不擔心發送網絡部分,我需要有一個最好的方式,從文件中獲取一個新的行。在發送之前,我也可以做一些過濾。

+0

這不是一個有效的問題嗎?或者我應該以不同的方式構建它?任何指導表示讚賞。 – hari 2011-06-17 18:08:38

回答

2

Linux有inotify,OS X有kqueue/kevent,Windows有similar stuff。所有這些都會讓您的進程阻塞,直到內核通知您文件發生更改。這是非常有效的,因爲你的進程可以休眠直到實際發生變化,但顯然這些接口不是可移植的。

唯一的便攜式方法是定期輪詢文件以查看它是否發生變化,但顯然效率不高。

+0

感謝您的回覆。我同意你和那個爲什麼我感到困惑。我需要不斷進行這項操作,並且必須高效。 – hari 2011-06-16 18:11:40

相關問題