1

root として (SMJobBless によって祝福された) 特権ヘルパー ツールを実行しており、Finder のプロセス ID を取得しようとしています。以下のコードは OS X 10.8 では問題なく動作しますが、10.7 では finderApps に対して空の配列を返します。

XCodeのSchemesの下にある「Debug Process As」オプションで「root」を選択することにより、10.7を実行している2つの異なるマシンで問題を再現しました。奇妙なことに、「sudo myTestApp」を使用して直接呼び出すと、コードは正常に機能します。

デーモン プロセスとして直接起動したり、XCode でルートとしてデバッグしたりすると、コードを実行できない理由はありますか?

int main(int argc, const char * argv[])
    {

    NSArray *finderApps = [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.apple.finder"];

    if ([finderApps count] == 0)
    {
        NSLog(@"failed to find Finder");

        return -1;
    }

    NSRunningApplication *finderApplication = [finderApps objectAtIndex:0];
    pid_t process_id = [finderApplication processIdentifier];

    NSLog(@"succeeded with procid: %d", process_id);

    return 0;
}
4

0 に答える 0