1

我有一个特权帮助工具以 root 身份运行(由 SMJobBless 祝福),我正在尝试获取 Finder 的进程 ID。下面的代码在 OS X 10.8 中运行良好,但在 10.7 上为 finderApps 返回一个空数组。

我在运行 10.7 的两台不同机器上重现了这个问题,方法是在 XCode 上的 Schemes 下为“Debug Process As”选项选择“root”。奇怪的是,如果我直接使用“sudo myTestApp”调用它,代码就可以正常工作。

有什么想法为什么在直接作为守护进程启动或在 XCode 下以 root 身份调试时无法运行代码?

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