Ситуация такая что при данном коде, если происходит событие в wd то оно замечательно обрабатывается. А все события в rd игнорируются :( Пробовал вырезать полностью wd из кога чтоб проверить работатет ли rd - работает! В чем проблема подскажите? gint err,fd; fd_set rd,wd; FD_ZERO(&rd); fd = fileno(thread.stream); FD_SET(fd,&rd); FD_ZERO(&wd); FD_SET(thread.fifo,&wd); while(1){ err = select(((fd < thread.fifo)?thread.fifo:fd)+1,&rd,&wd,NULL,NULL); if(err < 0){ g_printf("Error!\n"); } g_print("err = %d\n",err); if(FD_ISSET(thread.fifo,&wd)){ read(thread.fifo,buf,BUF_SIZE); g_printf("fifo :%s\n",buf); break; } if(FD_ISSET(fd,&rd)){ ...