特定のプロセス名が実行されているかどうかを Cocoa アプリから判断する方法が必要です。私が持っていた 1 つのアイデアは、NSTask を使用し、ps aux | を使用してポーリングすることでした。grep プロセス名. より良い解決策はありますか?
5 に答える
このサンプル コードを簡単に変更して、名前でプロセスを検索できるはずです。
http://developer.apple.com/mac/library/samplecode/PIDFromBSDProcessName/listing1.html
Snow Leopard を使用している場合は、NSRunningApplicationクラス、特に+ runningApplicationWithProcessIdentifier:メソッドを確認できます。
Process Manager APIを使用して、 GetNextProcessで実行中のすべてのプロセスをループし、 CopyProcessNameを使用してプロセスの名前を取得できます。この手法では、プロセスがいつ起動されるかを監視するという問題は解決されないことに注意してください。
プロセスが (瞬間ではなく) 一定期間実行されていることを確認する必要がある場合は、Tech Note 2050: Observing Process Lifetimes Without Pollingを参照してください。テクニカル ノートの一部の手法には制限があります。現在のログイン セッションで GUI プロセスを監視することしかできません。ただし、 kqueuesは、まさにあなたが探しているものかもしれません。それらを使用すると、任意の種類の 1 つのプロセスを監視できます。
私はこのGetBSDProcessList()
機能を数回使用しました。