Главная страница


ru.unix.bsd

 
 - RU.UNIX.BSD ------------------------------------------------------------------
 From : Eugene Grosbein                      2:5006/1       04 Apr 2000  14:46:32
 To : All
 Subject : проблема с accept()
 -------------------------------------------------------------------------------- 
 
 Привет!
 
 Слышал, что в BSD ядро автоматически перезапускает системный вызов
 после его прерывания сигналом. Во FreeBSD это как-то регулируется?
 Кажется, есть какой-то sysctl, запрещающий перезапуск.
 Проблема вот в чем. Демон висит на accept(), принял - форкнулся,
 и снова на accept(). Приходит сигнал - обработчик выставляет флаг,
 accept() возвращает EINTR, проверяется флаг, реакция на сигнал,
 и снова на accept(). 
 
 Это все работает до первого входящего соединения.
 После отработки первой же итерации accept-fork-accept,
 по приходу сигнала флаг выставляется (обработчик пишет в syslog об этом),
 а accept() не выходит с EINTR. И даже когда приходит следующее
 соединение, оно отрабатывается нормально. А сигнала как-будто и не было.
 Как заставить accept() прерываться?
 
 FreeBSD 3.4, STREAM-сокет домена UNIX, демон собран с pthreads.
 Сам демон потоков не использует, просто слинкован с библиотекой,
 требующей pthreads. Эту библиотека используется после fork().
 
 Eugene
  
 --- slrn/0.9.6.2 (FreeBSD)
  * Origin: SVZ-Service (2:5006/1@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 проблема с accept()   Eugene Grosbein   04 Apr 2000 14:46:32 
 Re: проблема с accept()   Valentin Nechayev   04 Apr 2000 15:59:00 
Архивное /ru.unix.bsd/26093792eaa15.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional