Linux内核手册页声明该epoll_ctl过程如下:
Run Code Online (Sandbox Code Playgroud)int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
显然,该event参数被声明为指向epoll_event struct.
在这个问题的上下文中,所述观察的重要性在于,指针类型声明之前没有const,因此,该过程似乎被允许修改传递的结构的内容。
这是某种遗漏,还是程序是故意设计的,我们必须假设传递的结构确实可以在程序内修改?
我知道这里的声明是明确的,但是有理由相信这是一个遗漏吗?
我还查看了内核4.6树中的相关源代码,并且我没有看到太多证据表明该程序甚至打算修改结构,所以就在那里。