|
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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/667958a0c74d.html, оценка из 5, голосов 10
|