2011-05-10 102 views
2

我正在爲套接字過濾編寫一個網絡內核擴展。爲了使其可配置,用戶級程序讀取配置文件並通過PF_SYSTEM套接字將信息傳遞給kext。使用launchd在OS X中加載和配置內核擴展

如果我想在系統啓動時儘快啓動並運行套接字篩選器,我將如何編排啓動程序?

我目前的想法是使用launchd來啓動一個小型的用戶態初始化程序。該程序將使用kextload來啓動kext。之後,它會讀取配置文件並通過PF_SYSTEM套接字與kext通信。完成工作後,它會很快退出。

另一個選項是有兩個launchd項目,一個用於kext(使用kextload),另一個用於用戶級配置文件讀取器。這將避免叉,但否則是相同的。無論哪種方式,launchd將不得不運行一個快速的非守護程序用戶區程序。

但是,launchd似乎適用於啓動實際的守護進程,而不是用於執行其工作和退出的快速任務。該developer library document說:

重要提示:如果你的守護進程太快,在啓動後關機,launchd會可能會認爲它已經崩潰。繼續這種行爲的守護進程可能會被暫停,並且在未來的請求到達時不會再次啓動。爲了避免這種情況,請不要在啓動後至少關閉10秒鐘。

這給我的印象是launchd不是正確的做法。我應該如何組織啓動?我的整個想法是否朝着錯誤的方向發展? (作爲一個方面說明,我想讓用戶在運行時也可以改變過濾選項,我想這可以簡單地通過在需要改變時打開一個新的PF_SYSTEM套接字連接到kext來完成)。

回答

2

我認爲這個警告只適用於按需啓動的守護進程。

+0

謝謝。如果事實確實如此,那是個好消息。這是你自己發現的東西,還是記錄在某處? – jjs 2011-05-10 19:07:01