Например поставили select на какой-то fd (FD_ZERO,FD_SET). select заснул до появления данных в fd, потому как поставили с timeout = NULL. Вопрос к знатокам внутренностей FreeBSD - какие флаги или что-то там еще дергается что сигнализирует select'у что данные пришли ? Реальная проблема такая - пишем в fd на который натравлен select, а он не реагирует. Используется pthreads.
>Например поставили select на какой-то fd (FD_ZERO,FD_SET). select заснул до появления данных
>в fd, потому как поставили с timeout = NULL. Вопрос к
>знатокам внутренностей FreeBSD - какие флаги или что-то там еще дергается
>что сигнализирует select'у что данные пришли ? Реальная проблема такая -
>пишем в fd на который натравлен select, а он не реагирует.
>Используется pthreads./tmp % cat select.c
#include <sys/select.h>
#include <stdlib.h>
#include <stdio.h>int
main()
{
struct fd_set mask;FD_ZERO(&mask);
FD_SET(fileno(stdin), &mask);
select(fileno(stdin) + 1, &mask, NULL, NULL, NULL);
if (FD_ISSET(fileno(stdin), &mask)) {
fprintf(stderr, "look's good\n");
}return 0;
}
/tmp % gcc select.c -o select
/tmp % mkfifo /tmp/fifo
/tmp % ./select < /tmp/fifo # за этим на другой консоли echo 'y' > /tmp/fifo
look's good
/tmp %/me не Це кодер...