Вторник, 21.11.2017, 22:22
Приветствую Вас, Гость
Главная » 2014 » Январь » 13 » Устранение ошибок eintr
10:36
Устранение ошибок eintr
ремонт варочных панелей
Некоторые ошибки легко устраняются. Например, если вызов readO прерываетсясигналом до того, как он успевает считать байты, то возвращается значение-1 (значение 0 можно перепутать с ситуацией EOF) и переменной errno присваивается значение EINTR. В таком случае можно просто повторить считывание.Действительно, существует много возможных завершений вызова readO:О вызов возвращает значение, равное len. Все len считанных байтов записаныв буфер buf. Результат допустим и ожидаем;О вызов возвращает значение, меньшее 1 еп, но большее нуля. Считанные байтызаписаны в buf. Это может происходить, когда сигнал прерывает незавершеннуюоперацию считывания, когда в середине считывания происходитошибка, когда доступно больше нуля, но меньше len байтов, когда конецфайла достигается раньше, чем удается считать 1 еп байтов. Повторение вызова(с соответствующим образом обновленными значениями buf и len) по-зволиг считать оставшиеся байты в оставшееся свободное пространство буфераили узнать нричину ошибки;О вызов возвращает значение 0. Это указывает на достижение EOF. Считыватьнечего;О вызов блокируется, потому что данные в данный момент времени недоступны.Этого не происходит в режиме без блокировки;Q вызов возвращает значение -1, а для переменной error устанавливается значениеEINTR. Это указывает на то, что сигнал был получен до того, как удалосьсчитать хотя бы один байт. Вызов можно повторить;О вызов возвращает значение -1, а для переменной error устанавливается значениеEAGAIN. Это указывает на то, что считывание было заблокировано из-заотсутствия данных, поэтому запрос нужно повторить позже. Происходиттолько в режиме без блокировки;О вызов возвращает значение -1, а переменной error присваивается значение,отличное от EINTR или EAGAIN. Это указывает на более серьезную ошибку.


Поиск битых ссылок
Просмотров: 237 | Добавил: admin | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: