2011-09-08 10 views
3

バックグラウンドで実行するアプリケーションや、Mac上でシステムプロセスとして実行するアプリケーションを作成する必要があります。Xcodeを使ってMac上で「システムプロセス」(起動プロセス)を書く方法は?

私はXcode 3.2.6を持っています(Xcode 4は私にとってはオプションではありません) - どんなタイプのプロジェクトにする必要がありますか?それのために使用?私がそれを展開する準備ができたら、コンピュータを起動したときに自動的に起動するように「インストールする」方法は?

EDIT

私の最大の疑問は、プロジェクトの種類を使用することです。私は実行し続けるプロセスが必要で、それはサーバーを監視し、数分ごとに更新された情報を送信します。

私は当初、このためのコマンドラインツールを作成しました。メインスレッドが実行されてすぐに存在するので、スレッドをスリープし、NSTimerを使用して必要な処理を実行する無限ループに入れます。これは間違ったアプローチですか?そこには良いですか?それは私が後にしていることです。

答えて

9

あなたが説明しているのは、Macのデーモンです。それらを構築する方法については、Daemons and Services Programming Guideをお読みください。

最も一般的な形式は、Launch Daemons and Agents文書に記載されているlaunchdで実行される起動デーモンです。これらはMac OS X 10.4以降に適しています。

10.4より前では、「スタートアップアイテム」がありました。 10.4より前のシステムで実行する必要がある場合を除き、これらを使用しないでください。

Technical Note TN2083 (Daemons and Agents)は、読む価値のある別のドキュメントです。

EDIT

はい、コマンド・ライン・テンプレートは、最良の出発点です。

ほとんどのデーモンは「オンデマンド」である必要があります。つまり、興味深い何かが起こったときにlaunchdを実行させる必要があるということです。追加のイベントを処理するために実行し続ける必要があります。そして、しばらくの間イベントが来なかったら、launchdはそれらをkillする必要があります。 「面白い出来事」がどのように見えるかは、あなたの問題によって決まります。一般的なイベントは、ソケット上のトラフィック、ファイルに対する変更、またはキューディレクトリに存在するファイルです。 Launchdは、これらのケースであなたを自動実行することができます。

+0

リンクBavariousをありがとう - 私はまだどのタイプのXcodeプロジェクトを使用するのか疑問に思っています。それはコマンドラインツールですか(私の編集を参照してください)。 – bugfixr

関連する問題