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


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Alexander Gordeyev                   2:5020/1089    16 Jul 2001  14:51:15
 To : All
 Subject : Re: system call "close" - blocking?
 -------------------------------------------------------------------------------- 
 
 > Столкнулся тут с одной проблемой - открываем с помощью вызова open в
 > блокирующем режиме ttySxx (в неблокирующем нормально не работает), и при
 > определенных обстоятельствах (например, ошибка общения с модемом) необходимо
 > порт закрыть и открыть заново, так вот, вызов close блокирует программу. Что
 > в связи с эти можно предпринять?
 
 1. завести поток, который будет закрывать дескрипторы (криво);
 2. пустить поток с флажком CLONE_FILES, работой которого будет закрытие
 данного дескриптора (криво);
 3. пускать логику работы с ttySxx в отдельном потоке, отличном от основного;
 
 > Можно делать что-то типа alarm(1), тогда
 > через секунду сигнал сбросит системный вызов, но это не решает проблему
 > висящего файл-дескриптора, их число ведь ограничено.
 
 криво и ненадежно. лучше fcntl(2)-ом выставить неблокирующий режим, а потом
 вызывать close(2). тоже криво.
 
 ps. под потоком я имею в виду clone(2)-процесс с флажком CLONE_VM.
 
 -- 
 With best regards, Alexander Gordeyev
 AGAVA Software Company, http://www.agava.com
 --- Gnus/5.0808 (Gnus v5.8.8) Emacs/20.5
  * Origin: AGAVA Software (2:5020/1089@fidonet)
 
 

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

 Тема:    Автор:    Дата:  
 Re: system call "close" - blocking?   Alexander Gordeyev   16 Jul 2001 14:51:15 
Архивное /ru.linux/667958a0c74d.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional