URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 3598
[ Назад ]

Исходное сообщение
"Что заставляет select отдавать управление"

Отправлено Kirill Mukhoyarov , 16-Ноя-04 17:09 
Например поставили select на какой-то fd (FD_ZERO,FD_SET). select заснул до появления данных в fd, потому как поставили с timeout = NULL. Вопрос к знатокам внутренностей FreeBSD - какие флаги или что-то там еще дергается что сигнализирует select'у что данные пришли ? Реальная проблема такая - пишем в fd на который натравлен select, а он не реагирует. Используется pthreads.

Содержание

Сообщения в этом обсуждении
"Что заставляет select отдавать управление"
Отправлено chip , 16-Ноя-04 21:38 
>Например поставили 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 не Це кодер...