Site icon EfmSoft

Что означает код errno 4 (EINTR)?

 
Также может означать:
КонстантаТипОС
ERROR_TOO_MANY_OPEN_FILESОшибка WindowsWindows
KERN_INVALID_ARGUMENTКод возврата ядра macOSmacOS
ippStsInvZeroСтатус Intel IPPЛюбая
INVALID_DATA_ACCESS_TRAPКод BSODWindows
Предыдущий Следующий
ESRCH EIO

EINTR

Смысл и контекст EINTR

Если обработчик сигнала вызывается, пока системный или библиотечный вызов заблокирован, возможны два варианта:

Конкретное поведение зависит от интерфейса и от того, был ли обработчик установлен с флагом SA_RESTART. Детали различаются между UNIX-системами. В Linux при использовании SA_RESTART автоматически перезапускаются многие операции на «медленных» устройствах, ожидание процессов, часть сокетных вызовов, блокировки, очереди сообщений, futex, семафоры и чтение inotify. Без этого флага те же вызовы могут вернуть EINTR.

Для read(), write() и родственных операций важно учитывать уже переданные данные. Если к моменту сигнала часть ввода-вывода выполнена, вызов обычно сообщает успешный частичный результат, а не EINTR. Локальный диск в этом смысле не считается «медленным» устройством, тогда как терминал, канал или сокет может блокироваться неопределённо долго.

Какие вызовы требуют особого внимания

Диагностика EINTR

Сохраняйте значение errno сразу после неудачного вызова: журналирование, выделение памяти, очистка или другая библиотечная функция способны заменить локальное для потока значение. Запишите точный системный или библиотечный вызов, возвращённое значение, дескриптор или путь, флаги, параметры тайм-аута и сведения о сигнале.

Официальные источники


Нужно найти другой код? Найти другой код состояния или ошибки.

Exit mobile version