2011-09-19 130 views
1

我有一個以超級用戶上下文作爲根運行的啓動守護進程。該守護進程始終運行並監視服務器。有時,我的守護進程會從服務器獲取一條命令,告訴它向用戶顯示某些內容。顯然,我無法從啓動守護進程執行此操作,因爲它沒有在「WindowsServer」環境中運行 - 所以另一個選項是爲每個有權訪問的用戶生成單獨的進程以顯示GUI。從啓動守護程序啓動帶有GUI的用戶應用程序

我擁有的一個選擇是創建一個啓動代理並讓操作系統爲我啓動它。然後啓動代理可以與啓動守護程序進行通信,以確定何時需要顯示某些內容。

雖然問題是這樣的:服務器有時會提供實際二進制文件的更新。因此,服務器會向啓動守護程序發送一系列文件,這些文件預計將複製到現有文件的頂部。如果我運行了啓動代理程序,如何關閉它以便代理程序本身可以更新?同樣,如何在更新完成後啓動代理備份?

回答

0

即興,我會說,你應該安排你的守護進程請求啓動代理退出的需求,你會安排它按需啓動相同的方式方法。一旦知道代理已經退出,守護進程就可以繼續進行更新。

請注意,您的代理可能不應該永遠活着,它絕對不應該投票守護進行工作。相反,您應該配置它,以便當守護程序試圖連接到代理時,launchd啓動代理。例如,您可以通過讓守護程序連接到代表launchd的代理程序註冊的Unix域套接字來實現此目的。

您可能會更好地瞭解Google的UpdateEngine如何處理軟件更新。我相信它也有一個啓動守護進程執行應用程序更新。由於這已經在許多計算機上運行,​​其軟件更新問題的解決方案已被證實。 (Sparkle's解決方案也得到了充分證明,但它依賴於用戶交互,這似乎是您想避免的。)

相關問題