2012-08-03 22 views
2

我想等待文件更改或套接字輸入。這兩個thinsg很少會發生,我寧願把它們都扔到同一個線程中,而不是爲它們搞亂單獨的線程,只是爲了避免一點混亂。由於Inotify_init似乎提供了一個文件描述符,因此我認爲我可以將它傳遞到select中,就像我傳入套接字時一樣,選擇將會同時監視兩者。然而,我試圖谷歌它,並沒有發現任何地方發生的例子,似乎如果有可能做到這一點會有一個例子,它發生在互聯網上的某處。可以將Inotify和Select呼叫合併?

任何人都可以驗證,如果我可以將一個描述從INotify傳遞到一個選擇方法就像我會套接字?或者如果有其他阻止方法可以偵聽文件和套接字更新?

謝謝

回答

2

這通常是Unix設備的工作方式。一旦你有文件描述符,你可以將它傳遞給select/poll/epoll(你應該在Linux系統上更喜歡epoll)。但是,documentation for inotify明確指出它是可選擇的。所以,如果你發現它不起作用,你可以提交一個bug。

您可以使用inotify_init1並將IN_NONBLOCK作爲標誌以非阻塞模式打開描述符。