应用程序等待select / poll如何使用libfuse接收错误。 我修改了libfuse示例中提供的fsel.c和fselclient.c代码,以解释我所面临的问题。
fsel.c:function fsel_poll()。
static int fsel_poll(const char *path, struct fuse_file_info *fi,
struct fuse_pollhandle *ph, unsigned *reventsp)
{
printf("on fuse poll called \r\n");
return -ENOENT; // return error on poll
}
fselclient.c:application
while (1) {
static char buf[4096];
fd_set rfds;
fd_set wfds;
fd_set efds;
int rc;
FD_ZERO(&rfds);
FD_ZERO(&wfds);
FD_ZERO(&efds);
FD_SET(fds, &rfds);
FD_SET(fds, &wfds);
FD_SET(fds, &efds);
rc = select(nfds, &rfds, &wfds, &efds, NULL);
printf(" rc value in select %d errno %d \r\n", rc, errno);
if (rc < 0) {
printf("Select error \r\n");
perror("select");
return 1;
}
}
通过上面的代码修改,我看到选择 rfds和wfds设置取消阻止, rc为2 ,但实际上应为-1 因为我总是在保险丝轮询处理函数中返回错误( ENOENT )。
有没有人遇到过这个问题的保险丝,如果是,我如何在select / poll上返回错误?
提前感谢您的帮助。