2013-03-18 34 views
3

我是目標c的noob,我有一個作爲根(系統範圍的應用程序)運行並與服務器通信的守護程序代碼。每過一段時間,服務器都會命令該根應用程序啓動一個額外的應用程序,該應用程序在登錄的用戶上下文中運行(不中斷用戶 - 無聲)。 我也寫了用戶上下文應用程序。我所缺乏的是對我的根守護進程如何啓動用戶上下文應用程序的理解。通過root-daemon按需啓動用戶上下文應用程序

  1. 我的守護進程如何根據需要啓動它?
  2. 我應該使用代理嗎?
  3. 這是否意味着代理將在啓動時運行?

我讀過https://developer.apple.com/library/mac/#technotes/tn2005/tn2083.html以及http://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html,但覺得我錯過了一些東西了。

BTW - 該解決方案應該在10.6,10.7,10.8 ...

謝謝大家提前:O)

+0

你可以舉個例子你是怎麼做到的,我是在同樣的需求下運行 – ColdSteel 2015-09-20 11:39:49

回答

0

,如果你知道當前登錄的用戶這將工作。

sudo chown -R current_loggedin_user myApp 
sudo chmod u+s /Contents/MacOS/myApp 
system([@"open myApp" UTF8String]); //inside root process 

如果權限的S組具有用戶比特組(對應於U + S),然後每當有人執行該程序,則處理需要對誰擁有它的特權。因此,current_loggedin_user是myApp的所有者,打開後將以current_loggedin_user模式運行myApp。

■set-user-ID-on-execution和set-group-ID-on-execution位。

u文件原始模式下的用戶權限位。

但是,如果用戶沒有登錄,它會拋出以下錯誤。

com.apple.launchd[1]: System: Bug: launchd_core_logic.c:8760 (24498):0 
com.apple.launchd[1]: System: job_mig_spawn() can't find its session! 
open[24459]: spawn_via_launchd() failed, errno=5 label=[0x0-0x274274]. 
rootProcess[23127]: LSOpenURLsWithRole() failed with error -10810 for the file /Applications/myApp.app/. 
+1

謝謝你的回答。我通過將用戶上下文應用程序設置爲代理來解決它... – NightRider 2013-10-24 19:30:14

相關問題