Пытаюсь вызвать select для 200 дескрипторов....
возвращает ошибку "Select: Bad file descriptor"
На 170 дескрипторах работает нормально
вот примерный код. Дескрипторы созданы через пайп.
Ненужные концы закрыты... Ограничения на количество файлов 32000
while(1){
FD_ZERO(&set);
hi = 0;
for(i = 0; i < opt.process_number; i++){
FD_SET(p_table[i].fd_out[0], &set);
if(hi<p_table[i].fd_out[0]) {
hi = p_table[i].fd_out[0];
}
}
if(select(hi+1, &set, NULL, NULL, 0) <= 0) {
perror("Select");
continue;
}
for(i = 0; i < opt.process_number; i++) {
if(FD_ISSET(p_table[i].fd_out[0], &set)){
read(p_table[i].fd_out[0],
&cmd, sizeof(cmd));
sprintf(buf,"Receive command %d
data %d\n",cmd.command, cmd.data);
write_log(buf);
command_hook(&cmd, i);
}
}
}
Ответ на:
комментарий
от Dead
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум вопрос про select() (2013)
- Форум не работает select () (2005)
- Форум select (2006)
- Форум помогите с select/pipe, плииииз... (2003)
- Форум помогите с select/pipe, плииииз... (2003)
- Форум чтение fifo (2006)
- Форум Проблема с select (2002)
- Форум select && SOCK_STREAM (2006)
- Форум select и non-blocking fifo (2007)
- Форум forkpty и read (2004)