3

私は Objective C の初心者であり、ルート (システム全体のアプリケーション) として実行され、サーバーと通信するデーモン コードを持っています。ときどき、サーバーはそのルート アプリに、ログオンしているユーザー コンテキスト内で実行される追加のアプリケーションを起動するように命令します (ユーザーを中断することなく、静かに)。ユーザー コンテキスト アプリケーションも作成しました。私に欠けているのは、ルート デーモンがユーザー コンテキスト アプリケーションを起動する方法を理解していないことです。

  1. デーモンをオンデマンドで起動するにはどうすればよいですか?
  2. エージェントを使用する必要がありますか?
  3. 起動時にエージェントが実行されるということですか?

https://developer.apple.com/library/mac/#technotes/tn2005/tn2083.htmlhttp://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/を読みましたBPSystemStartup/Chapters/CreatingLaunchdJobs.htmlですが、何かが足りないと感じています。

ところで - ソリューションは 10.6、10.7、10.8 ... で動作するはずです。

よろしくお願いします:o)

4

1 に答える 1

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 の所有者であり、open は myApp を current_loggedin_user モードで実行します。

■ 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/.
于 2013-10-21T12:12:49.560 に答える