【问题标题】:Kqueue udata field changingKqueue udata 字段更改
【发布时间】:2015-04-19 00:20:15
【问题描述】:

在我使用 kqueue 的 mac 上,它表明 udata 没有改变。然而,在kevent 调用的event_data 中返回的数组正在被修改。什么可能导致这种情况?我正在传递指向转换为 void* 的字符串的指针,当我在前 3 个字符之后的 kevent 之后读取时,其余的都被修改了。

谢谢

【问题讨论】:

    标签: c macos unix libc kqueue


    【解决方案1】:

    内核只保存并返回指针本身的值,而不是它指向的内存的内容。很有可能您正在传递一个指向稍后将被覆盖的内存的指针。

    通过将字段定义为uint64_tkqueue64() 系统调用对此更加明确。

    【讨论】:

    • 谢谢!我会再搞砸一点:)
    猜你喜欢
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多