PID的NSProcessInfo

时间:2016-02-05 09:21:27

标签: macos sandbox

我有一个过程的pid。我想检查该应用程序是否是沙箱。我想通过检查APP_SANDBOX_CONTAINER_ID环境变量来检查它。为此,我需要另一个进程的NSProcessInfo,以便我可以查看NSDictionary并检查该环境变量。由于NSProcessInfo是只读的,我如何从其pid生成另一个进程的NSProcessInfo并检查沙箱状态。

1 个答案:

答案 0 :(得分:1)

最好使用sandbox_check私有API来查看有问题的pid是否为沙盒进程。这就是活动监视器的功能。如果您真的想要获取另一个进程的环境变量,则需要使用sysctl / KERN_PROCARGS发出KERN_PROCARGS2系统调用,并解析返回的结构。

您可以像这样使用sandbox_check

extern int sandbox_check(pid_t, const char *, int);
...
...
isSandboxed = sandbox_check(pid, NULL, 0);  // 1 if sandboxed, 0 otherwise