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