c++ - 无法在应用商店的沙盒 OSX 应用中使用 libproc

标签 c++ macos appstore-sandbox

我有一个 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("%s\n", proc.pbi_name);
    }
}


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

最佳答案

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

关于c++ - 无法在应用商店的沙盒 OSX 应用中使用 libproc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54580788/

相关文章:

macos - 在 OSX 上运行 xunit.console.runner

objective-c - 启用 App Sandboxing 后,Flash Player 在 Webview 中不起作用

objective-c - 是否可以根据修改键更改 NSOpenPanel 的提示

c++ - 访问其他程序使用的内存

c++ STL在 multimap 上查找算法

c++头文件和包含

java - Time Profiler、Instruments、OS X 中缺少 JAVA 过程名称

c - 升级到Mojave后,无法在Mac上编译C程序

xcode - NSURL 书签在 Xcode Server 上的单元测试中失败

c++ - 如何使用Qt枚举蓝牙设备