|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Valentin Nechayev 2:5020/400 04 Apr 2000 15:59:00 To : Eugene Grosbein Subject : Re: проблема с accept() -------------------------------------------------------------------------------- Hello Eugene Grosbein! EG> Слышал, что в BSD ядро автоматически перезапускает системный вызов EG> после его прерывания сигналом. Во FreeBSD это как-то регулируется? man siginterrupt EG> Кажется, есть какой-то sysctl, запрещающий перезапуск. EG> Проблема вот в чем. Демон висит на accept(), принял - форкнулся, EG> и снова на accept(). Приходит сигнал - обработчик выставляет флаг, EG> accept() возвращает EINTR, проверяется флаг, реакция на сигнал, EG> и снова на accept(). EG> Это все работает до первого входящего соединения. EG> После отработки первой же итерации accept-fork-accept, EG> по приходу сигнала флаг выставляется (обработчик пишет в syslog об этом), EG> а accept() не выходит с EINTR. И даже когда приходит следующее EG> соединение, оно отрабатывается нормально. А сигнала как-будто и не было. Очень странно. EG> Как заставить accept() прерываться? EG> FreeBSD 3.4, STREAM-сокет домена UNIX, демон собран с pthreads. EG> Сам демон потоков не использует, просто слинкован с библиотекой, EG> требующей pthreads. Эту библиотека используется после fork(). А. Если pthreads - то не удивительно. ;( ... =?koi8-r?Q??= -- -- Valentin Nechayev netch@carrier.kiev.ua II:LDXIII/DCCCLXXIII.CCC --- ifmail v.2.15dev4 * Origin: Lucky Netch Incorporated (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/20328e7985276.html, оценка из 5, голосов 10
|