0

Macでlaunchdを使用してセットアップされたデーモンプロセスがあります。デーモンは root として実行されています。次の行では UI アプリケーションが起動しません -

system("launchctl start com.project.myproj");

しかし、ターミナルに行って同じコマンドを実行すると -> launchctl start com.project.myproj. それは私のアプリケーションを起動します。私の質問は、私が何か間違ったことをしているのですか、それともシステムが正しく動作していないのですか?

4

1 に答える 1

0

問題は、システムによって起動された起動デーモンが Aqua にアクセスできないため、デーモン プロセスがデスクトップ環境にアクセスできないことです。

Apple のTechnical Note TN2083: Daemons and Agents では、この一部について説明しています。( launchd エージェントに関するこのセクションを参照してください。)

SSH 接続からの Aqua 環境へのアクセスについて、同様の質問がありました。

アプリケーションを少し再構築する必要があると思います。

  1. すべてのユーザーの Aqua セッションで実行される起動エージェントを作成します。
  2. エージェントをルート デーモンに接続させるか、ルート デーモンに起動エージェントのインスタンスを検索させます。
  3. ルート デーモンによって通知されたら、起動エージェントにアプリケーションのグラフィカル部分を起動させます。
于 2011-10-16T18:10:24.147 に答える