【发布时间】:2016-01-27 18:48:07
【问题描述】:
假设我们有一个像这样的简单程序:
int fd;
kq = kqueue();
EV_SET(&kev, fd, EVFILT_VNODE, EV_ADD, 0, 0, NULL);
kevent(kq, &kev, 1, &ke, 1, &timeout)
kevent 在哪里检查fd 是否是有效的文件描述符?它可能会发现fd 表示的文件描述符已关闭。
【问题讨论】:
-
不清楚(至少对我而言)你在问什么。如果你给 kevent 传递一个封闭的 fd 会发生什么?
-
@arrowd 感谢您的回复。是的,如果我通过 kevent 关闭 fd 会发生什么?我觉得kevent里面有这样的check,但是没找到....
-
好吧,你可以编译你的代码试试看。我猜,kevent 不会返回 -1 来指示错误,而是简单地删除这个过滤器,因为这是关闭 fd 被监视时所做的事情。
标签: system-calls freebsd file-descriptor