1

1 のpidEVFILT_PROCを使用して監視することにより、Kevents を使用して新しく作成されたすべてのプロセスを監視しようとしています。launchd

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

誰もこれに遭遇しましたか?

ありがとう!

4

1 に答える 1

0

ident はイベントの ID (シリアル番号) です。フィルター固有のデータ (uint64_t) を確認する必要があります。

于 2020-09-09T14:18:57.617 に答える