Нейл Мэтью - Основы программирования в Linux

Тут можно читать онлайн Нейл Мэтью - Основы программирования в Linux - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-osnet, издательство «БХВ-Петербург», год 2009. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Основы программирования в Linux
  • Автор:
  • Жанр:
  • Издательство:
    «БХВ-Петербург»
  • Год:
    2009
  • Город:
    Санкт-Петербург
  • ISBN:
    978-5-9775-0289-4
  • Рейтинг:
    4/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Нейл Мэтью - Основы программирования в Linux краткое содержание

Основы программирования в Linux - описание и краткое содержание, автор Нейл Мэтью, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым.

Для начинающих Linux-программистов

Основы программирования в Linux - читать онлайн бесплатно полную версию (весь текст целиком)

Основы программирования в Linux - читать книгу онлайн бесплатно, автор Нейл Мэтью
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Таблица 11.5

Имя сигнала Описание
SA_NOCLDSTOP Не генерируется SIGCHLD, когда дочерние процессы остановлены
SA_RESETHAND Восстанавливает при получении действие, соответствующее значению SIG_DFL
SA_RESTART Перезапускает прерванные функции вместо ошибки EINTR
SA_NODEFER При перехвате сигнала не добавляет его а маску сигналов

Флаг SA_RESETHANDможет применяться для автоматической очистки функции сигнала при захвате сигнала, как мы видели раньше.

Многие системные вызовы, которые использует программа, прерываемые, т.е. при получении сигнала они вернутся с ошибкой и переменная errnoполучит значение EINTR, чтобы указать, что функция вернула управление в результате получения сигнала. Поведение требует повышенного внимания со стороны приложения, использующего сигналы. Если в поле sa_flagsфункции sigactionустановлен флаг SA_RESTART, функция, которая в противном случае могла быть прервана сигналом, вместо этого будет возобновлена, как только выполнится функция обработки сигнала.

Обычно, когда функция обработки сигнала выполняется, полученный сигнал добавляется в маску сигналов процесса во время работы функции обработки. Это препятствует последующему появлению того же сигнала, заставляющему функцию обработки сигнала выполняться снова. Если функция не реентерабельная, вызов ее другим экземпляром сигнала до того, как она завершит обработку первого сигнала, может создать проблемы. Но если установлен флаг SA_NODEFER, маска сигнала не меняется при получении этого сигнала.

Функция обработки сигнала может быть прервана в середине и вызвана снова чем-нибудь еще. Когда вы возвращаетесь к первому вызову функции, крайне важно, чтобы она все еще действовала корректно. Она должна быть не просто рекурсивной (вызывающей саму себя), а реентерабельной (в нее можно войти и выполнить ее снова). Подпрограммы ядра, обслуживающие прерывания и имеющие дело с несколькими устройствами одновременно, должны быть реентерабельными, поскольку высокоприоритетное прерывание может "войти" в тот код, который выполняется.

Функции, которые безопасно вызываются в обработчике сигнала и в стандарте X/Open гарантированно описанные либо как реентерабельные, либо как самостоятельно не возбуждающие сигналов, перечислены в табл. 11.6.

Все функции, не включенные в табл. 11.6, следует считать небезопасными в том, что касается сигналов.

Таблица 11.6

access alarm cfgetispeed cfgetospeed
cfsetispeed cfsetospeed chdir chmod
chown close creat dup2
dup execle execve exit
fcntl fork fstat getegid
geteuid getgid getgroups getpgrp
getpid getppid getuid kill
link lseek mkdir mkfifo
open pathconf pause pipe
read rename rmdir setgid
setpgid setsid setuid sigaction
sigaddset sigdelset sigemptyset sigfillset
sigismember signal sigpending sigprocmask
sigsuspend sleep stat sysconf
tcdrain tcflow tcflush tcgetattr
tcgetpgrp tcsendbreak tcsetattr tcsetpgrp
time times umask uname
unlink utime wait waitpid
write
Общая сводка сигналов

В этом разделе мы перечисляем сигналы, в которых нуждаются программы Linux и UNIX для обеспечения стандартных реакций.

Стандартное действие для сигналов, перечисленных в табл. 11.7, — аварийное завершение процесса со всеми последствиями вызова функции _exit(которая похожа на exit, но не выполняет никакой очистки перед возвратом управления ядру). Тем не менее, состояние становится доступным функции wait, а функция waitpidуказывает на аварийное завершение, вызванное описанным сигналом.

Таблица 11.7

Имя сигнала Описание
SIGALRM Генерируется таймером, установленным функцией alarm
SIGHUP Посылается управляющему процессу отключающимся терминалом или управляющим процессом во время завершения каждому процессу с высоким приоритетом
SIGINT Обычно возбуждается с терминала при нажатии комбинации клавиш + или сконфигурированного символа прерывания
SIGKILL Обычно используется из командной оболочки для принудительного завершения процесса с ошибкой, т.к. этот сигнал не может быть перехвачен или проигнорирован
SIGPIPE Генерируется при попытке записи в канал при отсутствии связанного с ним считывателя
SIGTERM Отправляется процессу как требование завершиться. Применяется UNIX при выключении для запроса остановки системных сервисов. Это сигнал, по умолчанию посылаемый командой kill
SIGUSR1, SIGUSR2 Может использоваться процессами для взаимодействия друг с другом, возможно, чтобы заставить их сообщить информацию о состоянии

По умолчанию сигналы, перечисленные в табл. 11.8, также вызывают преждевременное завершение. Кроме того, могут выполняться действия, зависящие от реализации, например, создание файла core.

Таблица 11.8

Имя сигнала Описание
SIGFPE Генерируется исключительной ситуацией во время операций с плавающей точкой
SIGILL Процессор выполнил недопустимую команду. Обычно возбуждается испорченной программой или некорректным модулем совместно используемой памяти
SIGQUIT Обычно возбуждается с терминала при нажатии комбинации клавиш +<\> или сконфигурированного символа завершения (quit)
SIGSEGV Нарушение сегментации, обычно возбуждается при чтении из некорректного участка памяти или записи в него, а также выход за границы массива или разыменование неверного указателя. Перезапись локального массива и повреждение стека могут вызвать сигнал SIGSEGVпри возврате функции по неверному адресу

При получении одного из сигналов, приведенных в табл. 11.9, по умолчанию процесс приостанавливается.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Нейл Мэтью читать все книги автора по порядку

Нейл Мэтью - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Основы программирования в Linux отзывы


Отзывы читателей о книге Основы программирования в Linux, автор: Нейл Мэтью. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x