#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <wait.h>
#include <time.h>
int fd[100][2];
fd_set read_set;
struct timeval val;
int main(int argc, char *argv[], char *env[]) {
val.tv_sec = 0;
val.tv_usec = 0;
for (int i = 0; i < 10; ++i) {
pipe(fd[i]);
FD_SET(fd[i][0], &read_set);
}
printf("%d\n", select(30, &read_set, NULL, NULL, &val));//если эту строчку закомментировать, ожидаемый результат будет совпадать с результатом работы программы(выведет 10)
for (int i = 0; i < 10; ++i) {
write(fd[i][1], "sad", 2);
}
printf("%d\n", select(30, &read_set, NULL, NULL, &val));
return 0;
}
Вывод: два нуля. Правильно ли я понимаю, что функция select модифицирует передаваемые ей множества дескрипторов(исключает те дескрипторы, которые заблокированы для чтения/записи)? Задаю данный вопрос, тк соответствующей информации в мане не нашел.