Re[2]: Непонятная ошибка при закрытии дескриптора файла
От: skl  
Дата: 28.09.14 13:31
Оценка:
Здравствуйте, CaptainFlint, Вы писали:

CF>Здравствуйте, skl, Вы писали:


skl>>1) Непонятная проблема происходит при закрытии дескриптора файла (открытого файла на чтение) в коде на C++ ниже (ОС Linux). Это метод класса, который

skl>>вызывается периодически по таймеру. Если я вставляю в конце этой функции close(barcode_fd), то программа падает в segmentation fault, а если оставляю без оператора close, то программа работает правильно, но в системе со временем исчерпываются все дескрипторы файлов, что очевидно, т. к. они не закрываются в программе.

CF>Странное что-то. Может, где-то в другом месте рушится стек или куча, а close всего лишь случайным образом оказался триггером? Падение происходит в самом close() или где-то дальше по коду? Если дальше, то что возвращает close()? (И read() заодно уж.)

CF>А если временно переписать на fopen/fread/fclose, проблема останется?

Я пробовал временно переписывать с помощью стандартных файловых потоков C++ (ifstream) — все работает без ошибок close в этом случае закрывает без проблем, но чтение блокируемое становится, как его сделать неблокируемым на С++, т. е. как установить O_NONBLOCK я не знаю.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.