我有一个特权帮助工具以 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;
}