偶尔(每天一次),选择将返回与EBADF.
我写了代码来搜索不好的描述符,循环遍历每个fd并调用select.这些呼叫永远不会返回EBADF.我也试过fstat.他们也永远不会返回EBADF.
我还重写了守护进程以使用民意测验.这没有帮助
有没有人有其他想法? (除了我做了一个愚蠢的错误,这是很容易与选择).
解决方法 我同意詹姆斯使用poll(),您可以轻松地检查每个fd的回复.即
struct pollfd fds[NUM_FDS];int ret,i;...ret = poll(fds,NUM_FDS,PolL_TIMEOUT);for (i = 0; i < NUM_FDS; i++) if (fds[i].revents & PolLHUP || fds[i].revents & PolLNVAL) ... do something ...@H_502_17@当然,你不会在现实世界中实现它,只是一个例子.我很久以前停止使用select(),poll()是一个更好的界面.你是正确的,它只是太容易拍摄自己的脚与select().
总结以上是内存溢出为你收集整理的选择EBADF:哪个FD不好?全部内容,希望文章能够帮你解决选择EBADF:哪个FD不好?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)