无法在应用商店的沙盒 OSX 应用程序中使用 libproc

Unable to use libproc in a sandboxed OSX app for app store

本文关键字:应用程序 OSX libproc 应用      更新时间:2023-10-16

我有一个C++应用程序,它使用libproc来获取打开的应用程序列表。未沙盒化时按预期工作。但是,要部署到应用商店,它必须被沙盒化,并且这样做时,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("%sn", proc.pbi_name);
    }
}

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

NSWorkspace.runningApplications 是获取有关正在运行的应用程序(而不仅仅是进程(的信息的更特定于 Mac 的方式,它可能在沙盒应用程序中工作。但一般来说,沙盒应用应该无法看到彼此。

不,没有办法解决这个问题。

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