我正在爲OS X上的守護進程實現一個自更新程序。該更新以.pkg文件形式發佈,所以我正在嘗試的操作如下: 當通知守護程序有更新可用時,它會通過system()調用呼叫installer來安裝程序包。該軟件包包含一個較新版本的守護程序,一個用於停止守護程序的預升級腳本(launchctl unload /Library/LaunchDaemons/foo.plist
)以及一個postflight腳本,可在安裝新版本後啓動備份。我遇到的問題是安裝程序過早退出。它懷疑這可能是因爲安裝程序爲了更新它而殺死它的父進程,然後被自殺而不是繼續作爲它自己的孤立進程。我試過,沒有運氣以下:C++在殺死父進程後保持進程有效
- Postpending與「&」安裝程序命令在 背景
- 結束語安裝命令nohup
運行install命令完成當我從命令行運行它時一貫沒有錯誤,並且從安裝程序運行時始終失敗。當從安裝程序調用時,我將輸出傳遞給一個文件,有時它沒有任何內容,有時它會顯示安裝在輸出停止前達到大約41%的完成。關於如何弄清楚過程中發生了什麼或確保它在沒有父母的情況下保持活力的任何想法?
如果守護進程需要被卸載和裝載這樣呢?看起來你可以直接替換守護進程的可執行文件,然後讓守護進程自行終止,這樣launchd只會重啓它,但會得到新的版本。 – bames53 2012-08-07 03:59:04