実行中のアプリケーションバンドルのリストを取得しようとしています。 Dockが表示されているかのように、ユーザーが起動したGUIアプリケーション、またはActivity Monitor(特定のプロセスの横にアイコンが表示されます)。私は、sysctl()
とKERN_PROC_ALL
を使用して、実行中のすべてのプロセスのリストを取得することができましたが、それはどのアプリケーションバンドルから来たのかわかりません。 Minecraftのようなアプリケーションはjava
と表示されていますが、あまり役に立ちません。OS Xでプログラムバンドルをプログラムで実行する
私はアクティビティモニタでのプロセスのグループ名は、私が知りたいのおおよそ何を示していることを知りました: Activity Monitor Showing Minecraft Launcher Running http://gdries.nl/activmon.png
実装言語は重要ではありません。現在Cで動作していますが、他の環境が必要であることが判明してもそれは問題ではありません。私がしたいのは、ユーザーが実行しているアプリケーションを検出するだけで、それぞれが使用された時間を記録することができます。 (ペアレンタルコントロールは類似しているが、解析できないplistファイルに記録する)
「ps」ユーティリティのコードをダウンロードし、必要なものを使用してください。 – user3629249
'ps'はプロセスを知っているだけで、プロセスがどのアプリケーションのバンドルであるのか、それともアプリケーションバンドルのようなものがあるのか分かりません。それは私に 'sysctl'、' KERN_PROC_ALL'と 'KERN_PROCARGS'ですでに得られているのと同じ情報を与えます(しかし、後者の形式は秘密で文書化されていません)。 –