macOS Мониторинг новых разветвленных процессов с помощью kevents

Я пытаюсь отслеживать все вновь созданные процессы с помощью Kevents путем мониторинга EVFILT_PROC с помощью launchd pid, равный 1:

struct kevent ke = { 0 };
const pid_t pid_of_launchd = 1;
EV_SET(&ke, pid_of_launchd, EVFILT_PROC, EV_ENABLE | EV_ADD | EV_CLEAR, NOTE_FORK | NOTE_EXEC, 0, NULL);

Я получаю события, когда создаются новые процессы, я не могу получить ни PID, ни имя нового процесса:

struct kevent change = { 0 };
int next_event = kevent(kq, NULL, 0, &change, 1, NULL);
// change.ident always equal 1

Кто-нибудь сталкивался с этим?

Благодаря!

1 ответ

Идентификатор - это идентификатор (серийный номер) события. Вы должны проверять конкретные данные фильтра (uint64_t).

Другие вопросы по тегам