在我使用kqueue的mac上,它声明udata没有变化。但是,在event_data of kevent调用中返回的数组正在进行一些修改。是什么导致的?我把指针传入字符串,抛出为void*,当我在kevent后阅读前3个字符之后,其余的字符都被修改了。
谢谢
发布于 2015-04-19 00:46:19
内核只保存和返回指针本身的值,而不是它所指向的内存的内容。很可能您正在传递一个指向稍后被覆盖的内存的指针。
kqueue64()系统调用通过将字段定义为uint64_t,对此有一点更明确的说明。
https://stackoverflow.com/questions/29724382
复制相似问题