Майкл Джонсон - Разработка приложений в среде Linux. Второе издание
- Название:Разработка приложений в среде Linux. Второе издание
- Автор:
- Жанр:
- Издательство:Вильямс
- Год:2007
- Город:Москва
- ISBN:978-5-8459-1143-8
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Майкл Джонсон - Разработка приложений в среде Linux. Второе издание краткое содержание
Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет собой отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из других операционных систем. Подробно рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование свободно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Изобилие хорошо документированных примеров кода помогает лучше усвоить особенности программирования в Linux.
Книга рассчитана на разработчиков разной квалификации, а также может быть полезна для студентов и преподавателей соответствующих специальностей.
Разработка приложений в среде Linux. Второе издание - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
E2BIG |
Список аргументов слишком длинный. При запуске нового процесса с помощью exec() существует ограничение на длину задаваемого списка аргументов. См. главу 10. |
EACCESS |
В доступе будет отказано. Эта ошибка возвращается системным вызовом access() , рассматриваемым в главе 11, и представляет собой более информативный код возврата, чем само состояние ошибки. |
EAGAIN |
Возвращается при попытке выполнения неблокируемого ввода-вывода, если нет доступных данных. EWOULDBLOCK является синонимом EAGAIN . При блокируемом вводе-выводе системный вызов установил бы блокировку и ожидал бы данных. |
EBADF |
Неправильный номер файла. Был передан номер файла, не ссылающийся на открытый файл, в функцию read() , close() , ioctl() или другой системный вызов, принимающий номер файла в качестве аргумента. |
EBUSY |
Системный вызов mount() возвращает эту ошибку при попытке смонтировать файловую систему, которая уже смонтирована, или размонтировать файловую систему, которая в настоящий момент используется. |
ECHILD |
Дочерние процессы отсутствуют. Возвращается семейством системных вызовов wait() . См. главу 10. |
EDOM |
Это ошибка не системного вызова, а ошибка из библиотеки С системы. EDOM устанавливается математическими функциями, если аргумент выходит за пределы допустимого диапазона. (Это EINVAL для области функции.) Например, функция sqrt() не работает с комплексными числами и потому не принимает отрицательные аргументы. |
EEXIST |
Возвращается creat() , mknod() или mkdir() , если файл уже существует, или функцией open() в том же случае, если указаны флаги O_CREAT и O_EXCL . |
EFAULT |
Неверный указатель (указывающий на недоступную область памяти) был передан в качестве аргумента системному вызову. Обращение по этому указателю из пользовательской программы, которая произвела системный вызов, приведет к ошибке сегментации. |
EFBIG |
Возвращается write() при попытке записи файла, который длиннее, чем может логически обработать файловая система (физические ограничения пространства во внимание не принимаются). |
EINTR |
Системный вызов был прерван. Прерываемые системные вызовы рассматриваются в главе 12. |
EINVAL |
Возвращается, если системный вызов получил недопустимый аргумент. |
EIO |
Ошибка ввода-вывода. Обычно генерируется драйвером устройства для обозначения ошибки в оборудовании или неисправимой ошибку взаимодействия с устройством. |
EISDIR |
Возвращается системными вызовами, требующими имя файла, например unlink() , если последний компонент в имени пути является каталогом, а не файлом, а данная операция не может быть применена к каталогу. |
ELOOP |
Возвращается системными вызовами, которые принимают путь, если при разборе пути встречается слишком много символических ссылок в строке (то есть символические ссылки, указывающие на символические ссылки, которые, в свою очередь, указывают на символические ссылки и так далее). Текущее ограничение — 16 символических ссылок на строку. |
EMFILE |
Возвращается, если для вызываемого процесса нельзя открыть больше файлов. |
EMLINK |
Возвращается link() , если в компонуемом файле уже содержится максимальное количество ссылок для файловой системы (в стандартной файловой системе Linux этот максимум составляет 32 000). |
ENAMETOOLONG |
Имя пути слишком длинное либо для системы, либо для файловой системы, к которой вы пытаетесь получить доступ. |
ENFILE |
Возвращается, если ни один процесс системы не может открыть больше ни одного файла. |
ENODEV |
Возвращается mount() , если запрошенный тип файловой системы не доступен. Возвращается open() при попытке открыть специальный файл для устройства, для которого нет ассоциированного драйвера в ядре. |
ENOENT |
Файл или каталог не существует. Возвращается при попытке получить доступ к несуществующему файлу или каталогу. |
ENOEXEC |
Ошибка исполняемого формата. Может появиться при попытке запустить (устаревший) а.out в системе, в которой отсутствует поддержка бинарных файлов а.out . Может также встречаться при попытке запуска бинарного файла формата ELF, собранного для другой архитектуры центрального процессора. |
ENOMEM |
Не хватает памяти. Возвращается функциями brk() и mmap() при неудачной попытке распределения памяти. |
ENOSPC |
Возвращается write() при попытке записать файл длиннее, чем объем свободного пространства в файловой системе. |
NOSYS |
Системный вызов не реализован. Обычно происходит при запуске нового исполняемого файла на старом ядре, которое не поддерживает системный вызов. |
ENOTBLK |
Системный вызов mount() возвращает эту ошибку при попытке смонтировать в качестве файловой системы файл, не являющийся специальным файлом блочного устройства. |
ENOTDIR |
Промежуточный компонент пути существует, но не является каталогом. Возвращается любым системным вызовом, принимающим имя файла. |
ENOTEMPTY |
Возвращается rmdir() , если удаляемый каталог не пуст. |
ENOTTY |
Обычно встречается, когда приложение, которое пытается обратиться к терминалу, запущено с перенаправлением ввода или вывода в канал. Но также может встречаться при попытке совершить операцию ввода-вывода на неправильном типе устройства. Стандартное сообщение об ошибке в этом случае, "not a typewriter", может сбить с толку. |
ENXIO |
Нет такого устройства или адреса. Обычно генерируется при попытке открыть специальный файл устройства, который ассоциируется с частью не установленного или не настроенного оборудования. |
EPERM |
У процесса недостаточно полномочий для завершения операции. Эта ошибка обычно встречается в файловых операциях. См. главу 11. |
EPIPE |
Возвращается write() , если читающая сторона канала или сокета закрыта и захвачен или проигнорирован сигнал SIGPIPE . См. главу 12. |
ERANGE |
Не являясь ошибкой системного вызова, ERANGE устанавливается математическими функциями, если результат невозможно представить возвращаемым типом. Эта ошибка может также возникать в других функциях, если им передается слишком короткий буфер для возвращаемой строки. (Для диапазона этой ошибке соответствует EINVAL .) |
EROFS |
Возвращается write() при попытке записать в файловую систему, доступную только для чтения. |
ESPIPE |
Возвращается lseek() при навигации по файлу, дескриптор которого не поддерживает навигацию (включая файловые дескрипторы для каналов, именованных каналов и сокетов). См. главы 11 и 17. |
ESRCH |
Нет такого процесса. См. главу 10. |
ETXTBSY |
Возвращается open() при попытке открыть на запись запущенный исполняемый файл или совместно используемую библиотеку или любой другой файл, отображенный на память с установленным флажком MAP_DENYWRITE (см. главу 13). Чтобы избежать такого поведения, необходимо переименовать файл, сделать новую копию с таким же именем, как у старого файла, и работать с этой новой копией. См. главу 11 с обсуждением того, почему так происходит. |
EXDEV |
Возвращается link() , если исходные и целевые файлы находятся в разных файловых системах. |
Распространены и некоторые другие коды возврата ошибок, которые относятся только к сетевым функциям. Более подробную информацию можно найти в главе 17.
Читать дальшеИнтервал:
Закладка: