ПРИЛОЖЕНИЕ B СООБЩЕНИЯ ОБ ОШИБКАХ СООБЩЕНИЯ СИСТЕМЫ ОБ ОШИБКАХ Запрос системе, который не был успешно выполнен, возвращает для вызванного процесса особое значение. В большинстве случаев это значение -1. Если запрос выполнен успешно, то для процесса зна- чение равно 0. Если запрос системе закончился неудачей, то в этом случае внешней переменной с именем errno присваивается од- но из значений, указанных ниже. Если для процесса получено значение -1, переменная errno содер- жит число, связанное с причиной неудачи запроса. Значение пере- менной errno может быть доступно сразу после неудачного выпол- нения запроса. При успешном выполнении ее значение не изменяет- ся. Эти номера ошибок определены в файле /usr/include/sys/err- no.h. 1 EPERM Не владелец Обычно эта ошибка указывает на попытку модифициро- вать файл, доступ к которому разрешен только его владельцу и суперпользователю. 2 ENOENT Не найден файл или каталог Эта ошибка имеет место, если имя файла указано и файл должен был бы существовать, однако его нет; или если один из каталогов, указанных в маршрутном имени, не существует. 3 ESRCH Нет такого процесса Процесс, соответствующий заданному идентификатору процесса (pid) в системном вызове kill(2) или ptrace(2), не может быть найден. 4 EINTR Прерывание системного вызова Асинхронный сигнал (такой как сигнал прерывания или выхода), перехватываемый пользователем, пришел во время выполнения системного вызова. Если после обработки сигнала будет продолжено выполнение программы, то системный вызов завершится с ошиб- кой. 5 EIO Ошибка ввода/вывода Обнаружена ошибка ввода/вывода. Эта ошибка может иногда иметь место во время вызова, который следу- ет за вызовом, к которому на самом деле относится эта ошибка. 6 ENXIO Неверное устройство или адрес Ввод/вывод в специальный файл ссылается на устрой- ство, которое не существует; или исчерпаны лимиты устройства для ввода/вывода. Эта ошибка может так- же иметь место, если магнитофон находится в пас- сивном состоянии или не установлен пакет дисков. 7 E2BIG Длинный список аргументов При обращении к системному вызову из семейства exec(2) задан список аргументов, содержащий более 5120 байт. 8 ENOEXEC Неверный формат выполняемого файла Сделан запрос на выполнение файла, который, хотя и имеет соответствующие права, не начинается с до- пустимого магического числа [см. a.out(4)]. 9 EBADF Неверный номер файла Или дескриптор файла указывает на неоткрытый файл, или запрос на чтение (соответственно запись) сде- лан для файла, открытого только для записи (соот- ветственно чтения). 10 ECHILD Нет порожденных процессов Системный вызов wait(2) был выполнен процессом, не имеющим существующих порожденных процессов или процессов, которых он не дождался. 11 EAGAIN Слишком много процессов Системный вызов fork(2) завершился аварийно, так как системная таблица процессов полна или пользо- вателю не разрешено более создавать новые процес- сы. 12 ENOMEM Исчерпано пространство Во время выполнения системных вызовов exec(2), brk(2), или sbrk(2) программе потребовалось места в памяти больше, чем система может выделить. Это не временное условие; максимальный размер прост- ранства является системным параметром. Ошибка мо- жет также иметь место, если набор секций команд данных и стека требует слишком много сегментных регистров или, если при вызове fork(2) недостаточ- но места в области подкачки. 13 EACCES Нарушение прав доступа Была предпринята попытка получить доступ к файлу, а прав для этого нет. 14 EFAULT Недопустимый адрес Произошло прерывание при попытке использования ар- гументов системного вызова. 15 ENOTBLK Требуется блочное устройство Не блочный файл указан там, где ожидался блочный например, в вызове mount(2). 16 EBUSY Устройство или ресурс заняты Была сделана попытка смонтировать устройство, ко- торое уже смонтировано, или была предпринята по- пытка размонтировать устройство, на котором нахо- дится активный файл (открытый файл, текущий ката- лог, смонтированный файл или активная секция ко- манд). Эта ошибка также имеет место при попытке разрешить сбор статистики, если он уже разрешен. 17 EEXIST Файл уже существует Существующий файл указан в неподходящем контексте, например в качестве аргумента системного вызова link(2). 18 EXDEV Ссылка на другое устройство Была предпринята попытка создать ссылку на файл, расположенный на другом устройстве. 19 ENODEV Неподходящее устройство Была предпринята попытка выполнить системный вы- зов, неподходящий в данном контексте, например по- пытка чтения с устройства, открытого только для записи. 20 ENOTDIR Требуется каталог Там где ожидалось имя каталога, указано нечто дру- гое; например, в маршрутном имени или в качестве аргумента системного вызова chdir(2). 21 EISDIR Попытка записи в каталог 22 EINVAL Недопустимый аргумент Недопустимое значение аргумента (например, размон- тирование несмонтированного устройства; указание неопределенного сигнала при вызове signal(2) или kill(2); чтение или запись в файл, для которого вызов lseek(2) вернул отрицательный указатель). Также устанавливается математическими функциями, описанными в разделе 3M настоящего Справочника. 23 ENFILE Переполнена таблица файлов Системная таблица открытых файлов переполнена и временно не может быть выполнен системный вызов open(2). 24 EMFILE Слишком много открытых файлов Никакой процесс не может иметь больше, чем NOFILES (по умолчанию 20) одновременно открытых дескрипто- ров файлов. 25 ENOTTY Не символьное устройство Была предпринята попытка выполнить системный вызов ioctl(2) к файлу, который не является специальным символьным. 26 ETXTBSY Перегружена секция команд Была предпринята попытка выполнить файл, который в данный момент открыт для записи. Эта ошибка может также означать попытку записи в файл, содержащий выполняющуюся в данный момент программу. 27 EFBIG Слишком большой файл Размер файла превысил максимально допустимое зна- чение ULIMIT [см. ulimit(2)]. 28 ENOSPC Исчерпано пространство на устройстве При записи [посредством write(2)] в обычный файл на устройстве не осталось свободного места. При выполнении fcntl(2) установка или снятие блокиров- ки с записей файла не может быть произведено, так как в системе не осталось больше места. 29 ESPIPE Ошибка позиционирования Аргументом системного вызова lseek(2) является ка- нал. 30 EROFS Смонтировано только для чтения Попытка модифицировать файл или каталог на устрой- стве, смонтированном только для чтения 31 EMLINK Слишком много ссылок Была предпринята попытка создать более чем 100 ссылок на файл. 32 EPIPE Канал разрушен Была предпринята попытка записать в канал, из ко- торого ни один процесс не читает данных. При этом обычно генерируется сигнал; если сигнал игнориру- ется, то возвращается ошибка. 33 EDOM Выход за границы области определения Аргумент функции, описанной в разделе 3M, лежит вне ее области определения. 34 ERANGE Переполнение Результат функции, описанной в разделе 3M, неп- редставим с допустимой в машине точностью. 35 ENOMSG Нет сообщений такого типа Была предпринята попытка получить сообщение типа, который не существует в указанной очереди сообще- ний [см. msgop(2)]. 36 EIDRM Идентификатор удален Эта ошибка возвращается процессам, которые возоб- новляют выполнение из-за удаления идентификатора очереди сообщений, семафора или разделяемого сег- мента из системной таблицы имен [см. msgctl(2) semctl(2), shmctl(2)]. 37-44 Зарезервированные номера 45 EDEADLK Тупик обнаружен и обойден Была обнаружена и обойдена тупиковая ситуация. Эта ошибка свойственна операциям блокировки файлов и их сегментов. 46 ENOLCK Ошибка блокировки Ошибка свойственна операциям блокировки файлов и их сегментов. 46 ENOLCK Ошибка блокировки При выполнении fcntl(2) установка или снятие бло- кировки файла не могут быть произведены, так как в системе не осталось больше места. 60 ENOSTR Не поток Попытка выполнить системные вызовы putmsg(2) и getmsg(2) для дескриптора файла, а файл не являет- ся ПОТОКОВЫМ. 62 ETIME Истекло время для операции с потоком Время, отведенное на вызов ioctl(2) для ПОТОКОВОГО файла, истекло. Причина этой ошибки для разных устройств разная - возможно, проявился дефект ап- паратуры, или, быть может, виновата программа. Мо- жет быть, для операции просто отведено недостаточ ное время. Результат операции ioctl(2) неопреде- лен. 63 ENOSR Исчерпаны ресурсы потоков При попытке выполнить системный вызов open(2) для ПОТОКОВОГО файла не было доступных очередей или структур данных. 64 ENONET Машина не в сети Эта ошибка возможна только при работе с системой разделения удаленных файлов (РУФ). Она имеет мес- то, когда пользователь пытается афишировать, скры- вать, монтировать, размонтировать удаленные ресур- сы в то время, когда компьютер еще не проделал все положенные процедуры для подключения к сети. 65 ENOPKG Не та конфигурация Эта ошибка имеет место, когда пользователь пытает- ся использовать системный вызов, не входящий в те- кущую конфигурацию системы. 66 EREMOTE Удаленный ресурс Эта ошибка возможна только при работе с РУФ. Она имеет место, когда пользователь пытается афиширо- вать ресурс, который не находится на локальной ма- шине, или пытается монтировать/размонтировать уст- ройство, которое находится на удаленной системе. 67 ENOLINK Разорвана связь Эта ошибка возможна только при работе с РУФ. Она имеет место, когда происходит обращение к удален- ной системе, связи с которой в данный момент нет. 68 EADV Ошибка афиширования Эта ошибка возможна только при работе с РУФ. Она имеет место, когда пользователь пытается афиширо- вать ресурс, который уже афиширован, или пытается прекратить работу РУФ или начать размонтирование, когда есть еще афишированные ресурсы. 69 ESRMNT Есть смонтированные Эта ошибка возможна только при работе с РУФ. Она имеет место, когда пользователь пытается прекра- тить работу РУФ в то время, когда есть еще ресур- сы, смонтированные с удаленной системы. 70 ECOMM Ошибка связи Эта ошибка возможна только при работе с РУФ. Она имеет место, когда пользователь пытается послать сообщение на удаленную машину, связи с которой в данный момент нет. 71 EPROTO Ошибка протокола Обнаружена какая-либо ошибка протокола. Эта ошибка специфична для различных устройств, но не означает сбоя оборудования. 74 EMULTIHOP Нет прямой связи Эта ошибка возможна только при работе с РУФ. Она имеет место, когда пользователь пытается получить доступ к удаленным ресурсам, которые напрямую не- доступны. 77 EBADMSG Недопустимое сообщение При выполнении системных вызовов read(2), getmsg(2) или вызова ioctl(2) для псевустройства, с аргументом I_RECVFD, в начале очереди оказалось нечто, что не может быть обработано. Что именно - зависит от системного вызова: read(2) Управляющая информация или переданный дескриптор файла. getmsg(2) Переданный дескриптор файла. ioctl(2) Управляющая информация или данные. 83 ELIBACC Нет доступа к разделяемой библиотеке Попытка выполнить вызов exec(2) для файла a.out, который ссылается на разделяемую библиотеку, а библиотека не существует или у пользователя не хватает прав для ее использования. 84 ELIBBAD Повреждение разделяемой библиотеки Попытка выполнить вызов exec(2) для файла a.out, который ссылается на разделяемую библиотеку, а exec(2) не может загрузить эту библиотеку. Возмож- но, структура разделяемой библиотеки нарушена. 85 ELIBSCN Повреждение секции библиотек Попытка выполнить вызов exec(2) для файла a.out, который ссылается на разделяемую библиотеку, а в секции библиотек (.lib) файла a.out находятся не- верные данные. В секции библиотек хранятся сведе- ния для exec(2) о том, какие разделяемые библиоте ки требуются. Возможно, структура файла a.out на- рушена. 86 ELIBMAX Много ссылок на разделяемые библиотеки Попытка выполнить вызов exec(2) для файла a.out, который использует больше разделяемых библиотек, чем разрешено в данной конфигурации системы. 87 ELIBEXEC Выполняется разделяемая библиотека Попытка выполнить вызов exec(2) непосредственно для разделяемой библиотеки, что запрещено.