Невозможно использовать libproc в изолированном OSX-приложении для магазина приложений - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть приложение на 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;
}

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

NSWorkspace.runningApplications - это более специфичный для Mac способ получения информации о запущенных приложениях (а не просто процессах), возможно, он будет работать в изолированном приложении.Но в общем случае приложения в песочнице не должны видеть друг друга.

0 голосов
/ 07 февраля 2019

Нет, тут нет пути.

Цель песочницы - изолировать ваше приложение от других процессов, запущенных на машине.Он делает свою работу правильно, не позволяя вашему приложению просматривать эти процессы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...