Я использую 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() . Похоже, что fcntl() возвращает 0.
Я хотел бы знать, в каком состоянии он возвращает 0 и что делать, чтобы справиться с этой ситуацией.