我有一個LaunchAgent應用程序,它在用戶登錄系統時啓動。如何處理快速用戶切換的多個實例?
LaunchAgent文件位於/ Library/LaunchAgents中,因此應用程序將啓動所有登錄到sustem的用戶。
這就是我想要的。
但問題是,當我使用快速用戶切換並登錄到另一個用戶時,活動監視器顯示應用程序正在爲兩個用戶運行。 我想要的是隻有當前用戶的實例應該始終存在。而且我切換前一個實例的用戶應該退出。
請幫我解決這個問題。 感謝
我有一個LaunchAgent應用程序,它在用戶登錄系統時啓動。如何處理快速用戶切換的多個實例?
LaunchAgent文件位於/ Library/LaunchAgents中,因此應用程序將啓動所有登錄到sustem的用戶。
這就是我想要的。
但問題是,當我使用快速用戶切換並登錄到另一個用戶時,活動監視器顯示應用程序正在爲兩個用戶運行。 我想要的是隻有當前用戶的實例應該始終存在。而且我切換前一個實例的用戶應該退出。
請幫我解決這個問題。 感謝
你可以聽使用碳或可可用戶交換機 - 見用戶切換通知在Multiple User Environments programming guide。但是,如果您在收到用戶切換通知時退出進程,則系統切換回來時,launchd將不會重新啓動。
處理這種問題最簡單的方法是確保您的應用程序可以關閉任何資源,當系統切換離開用戶的登錄會話時需要由用戶獨佔使用,並在您重新打開它們時重新打開它們通知系統正在返回該會話。
如果這是不可能的,你可能會把你的應用分成兩個進程;一個由launchd發佈的匿名幫手,它永遠不會退出,其唯一的工作就是運行完整的應用程序,以及完整的應用程序本身。當系統切換離開當前用戶時,您的完整應用程序可以退出,但助手可以保持運行;當切換回時,幫手可以重新啓動您的完整應用程序。
最後,在當前登錄會話切換後啓動了採取措施聽起來像有用的功能 - 考慮在蘋果的bug追蹤器上提交功能請求。
謝謝@ jatoben。目前我正在使用「用戶切換通知」來停止非活動會話中的進程。關於蘋果公司的功能要求,目前我確實有一些簡單的功能列表,如果操作系統具有直接處理功能,並且可以避免我們寫很多條件來處理它,那麼這個列表很簡單。 – 2013-03-01 07:16:07
對於它的價值,不保證只有一個用戶會被激活。屏幕共享功能現在允許用戶使用一個帳戶登錄和使用該計算機,而其他人則使用不同的帳戶在本地使用該計算機,*同時*。 – s4y 2016-09-28 14:30:38