LINUX.ORG.RU

вопрос по функции select


0

2
 #include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <cmath>
#include <climits>
#include <set>
#include <utility>
#include <string>
#include <list>
#include <errno.h>
#include <sys/stat.h>
#include <dirent.h>
#include <map>
#include <cstring>
#include <sys/wait.h>
#include <utility>
#include <signal.h>
#include <sys/types.h>
#include <sys/time.h>
using namespace std;
 
fd_set fdread;
 
int main() {
   FD_ZERO(&fdread);
   int fd[2];
   pipe(fd);
   pipe(fd);
   pipe(fd);
   pipe(fd);
   pipe(fd);
   pipe(fd);
   pipe(fd);
   FD_SET(fd[0], &fdread);
   write(fd[1], "sdssds", 6);
   printf("%d\n", fd[1]);
   int x = select(50, &fdread, NULL, NULL, NULL);
   printf("%d", x);
   return 0;
}

Как вы заметили из кода выше в множестве дескрипторов нету 1.Почему select всегда возвращает дескриптор на стандартный вывод т.е 1?

потому что он возвращает количество изменивших состояние дескрипторов. прочитай мануал

anonymous
()
Ответ на: комментарий от anonymous

Three independent sets of file descriptors are watched. Those listed in readfds will be watched to see if characters become available for reading (more precisely, to see if a read will not block

в fdread добавлен только один дескриптор, и это не 1

x0r ★★★★★
()

select(50

Ты что, 50 дескрипторов понаоткрывал?

И я не понял, почему ты решил, что select возвращает дескриптор, а не количество, как написано в мане?

Eddy_Em ☆☆☆☆☆
()

И да, без FD_ISSET ты точно никак не узнаешь, что именно твой дескриптор активен!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от x0r

в fdread добавлен только один дескриптор, и это не 1

Ну и дальше что? Тебе пони все мозги съели?

anonymous
()
Ответ на: комментарий от anonymous

Those listed in readfds will be watched

в readfds загнали один дескриптор, дебагер показывает не 1

upd: все правильно работает, select возвращает не файловый дескриптор.

x0r ★★★★★
()
Последнее исправление: x0r (всего исправлений: 1)

Тред-детектор наркоманов.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.