LINUX.ORG.RU

История изменений

Исправление Dron, (текущая версия) :

#include <sys/select.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <wait.h>
#include <time.h>

int fd[10][2];
fd_set read_set,buff_rs;
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);
   }

      buff_rs=read_set;

   printf("%d\n", select(30, &buff_rs, NULL, NULL, &val));//если эту строчку закомментировать, ожидаемый результат будет совпадать с результатом работы программы(выведет 10)
   for (int i = 0; i < 10; ++i)
   {
      write(fd[i][1], "sad", 2);
   }
      buff_rs=read_set;

   printf("%d\n", select(30, &buff_rs, NULL, NULL, &val));
   return 0;
}





Исходная версия Dron, :

#include <sys/select.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <wait.h>
#include <time.h>

int fd[10][2];
fd_set read_set,buff_rs;
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);
   }

      buff_rs=read_set;

   printf("%d\n", select(30, &buff_rs, NULL, NULL, &val));//если эту строчку закомментировать, ожидаемый результат будет совпадать с результатом работы программы(выведет 10)
   for (int i = 0; i < 10; ++i)
   {
      write(fd[i][1], "sad", 2);
   }
      buff_rs=read_set;

   printf("%d\n", select(30, &buff_rs, NULL, NULL, &val));
   return 0;
}