无法在沙盒OSX应用中为应用商店使用libproc

时间:2019-02-07 19:23:45

标签: c++ macos appstore-sandbox

我有一个使用libproc来获取打开的应用程序列表的C ++应用程序。未进行沙箱测试时,可以按预期工作。但是,要部署到应用商店,必须对其进行沙箱处理,并且这样做时,proc_listallpids(来自libproc)不再起作用。反正这个吗?

#include <libproc.h>
#include <stdio.h>
#include <string.h>

void find_pids()
{
    pid_t pids[2048];
    int bytes = proc_listallpids(pids, sizeof(pids));
    int n_proc = bytes / sizeof(pids[0]);
    for (int i = 0; i < n_proc; i++) {
        struct proc_bsdinfo proc;
        int st = proc_pidinfo(pids[i], PROC_PIDTBSDINFO, 0,
                              &proc, PROC_PIDTBSDINFO_SIZE);
        printf("%s\n", proc.pbi_name);
    }
}


int main()
{
    find_pids();
    return 0;
}

2 个答案:

答案 0 :(得分:2)

NSWorkspace.runningApplications是获取特定于Mac的特定方式,用于获取有关正在运行的应用程序(而不只是进程)的信息,它可能会在沙盒应用程序中工作。但总的来说,沙盒应用程序应该无法相互看到。

答案 1 :(得分:1)

不,这没有办法。

沙箱的目的是将您的应用程序与计算机上运行的其他进程隔离。通过阻止您的应用程序查看这些进程,它可以正确地完成工作。