【发布时间】:2019-04-03 03:11:56
【问题描述】:
我在文件描述符上使用 fcntl() 并进行以下调用:
Retval = select(
MaxSocketId + 1,
&ReadSocketSet,
(fd_set *)NULL,
(fd_set *)NULL,
(struct timeval *)NULL
);
if (Retval <= 0) {
for (lIndexFD = 3; lIndexFD < (MaxSocketId + 1); lIndexFD++) {
if ((lFlag = fcntl(lIndexFD, F_GETFD)) < 0) {
if (errno == 9) {
FD_CLR(lIndexFD, &ActiveSocketSet);
}
}
else
printf(" \n In fcntl Else cond %d ", lFlag);
}
continue;
}
但是我的进程在 fcntl() 的 else 条件下进入无限循环。 fcntl() 似乎返回 0。
我想知道它在什么情况下返回 0 以及如何处理这种情况。
【问题讨论】:
标签: c linux sockets select fcntl