【问题标题】:macOS Monitor new forked processes using keventsmacOS 使用 kevents 监控新的分叉进程
【发布时间】:2020-12-25 23:30:52
【问题描述】:

我正在尝试通过使用launchd pid 监控EVFILT_PROC 来监控所有使用 Kevents 新创建的进程,即 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

有人遇到过吗?

谢谢!

【问题讨论】:

    标签: macos bsd darwin xnu kevent


    【解决方案1】:

    ident 是事件的 id(序列号)。您应该检查过滤器特定数据(uint64_t)。

    【讨论】:

    • 谢谢,过滤器特定数据为空
    猜你喜欢
    • 2017-03-27
    • 2011-02-14
    • 2013-03-06
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    • 2022-12-13
    • 2013-07-29
    • 2023-03-10
    相关资源
    最近更新 更多