Майкл Джонсон - Разработка приложений в среде Linux. Второе издание

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

Майкл Джонсон - Разработка приложений в среде Linux. Второе издание краткое содержание

Разработка приложений в среде Linux. Второе издание - описание и краткое содержание, автор Майкл Джонсон, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

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

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

Разработка приложений в среде Linux. Второе издание - читать онлайн бесплатно полную версию (весь текст целиком)

Разработка приложений в среде Linux. Второе издание - читать книгу онлайн бесплатно, автор Майкл Джонсон
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Виртуальные консоли предлагают пользователям множество опций, однако многие пренебрегают ними и просто используют X Window System. Те пользователи, которые предпочитают применять VC, имеют перечисленные ниже возможности.

• Выбор отдельного шрифта для каждой VC.

• Выбор индивидуального размера терминала в каждой VC.

• Выбор соответствий ключа (подробнее об этом далее) для всех VC.

• Выбор различных клавиатурных кодировок для всех VC.

• Переключение виртуальных консолей при помощи особых нажатий клавиш, установленных пользователем.

Проект документации Linux (Linux Documentation Project — LDP) предлагает документацию, объясняющую, как использовать существующие программы, извлекая все преимущества описанных возможностей. Перед вами стоит другая цель — вы хотите программировать для VC, а не просто их использовать. В утилитах [150] Прочтите man-страницы для утилит loadkeys , dumpkeys , keytables , setfont и mapscrn . хорошо инкапсулированы установки шрифтов и клавиатуры, поэтому вы можете просто вызывать их из своих программ. Однако встречаются ситуации, в которых такие внешние программы бесполезны.

20.1. Начало работы

Ниже приведен список тех действий, которые вы можете производить над VC. Некоторые из них относятся только к отдельной виртуальной консоли (как правило, к той, которая активна в данный момент); некоторые используются для всех работающих VC.

• Найти текущую VC.

• Инициировать переключение VC.

• Отклонить или принять переключение VC.

• Полностью запретить переключение VC.

• Найти неиспользуемую VC.

• Динамически назначить или освободить память VC в ядре.

• Генерировать простые звуки.

Во всех случаях необходима одна и та же подготовительная работа. Вы будете применять команды ioctl()на /dev/tty— поэтому нужно начать с включения заголовочных файлов, которые определяют аргументы ioctl().

#include

#include

#include

#include

#include

После этого нужно открыть /dev/tty.

if ((fd = open("/dev/tty", O_RDWR)) < 0) {

perror("myapp: не удается открыть /dev/tty");

exit(1);

}

Если вы обнаруживаете, что не можете открыть /dev/tty, то, возможно, у вас проблемы с полномочиями: устройство /dev/ttyдолжно быть доступно для чтения и записи всем без исключения.

Обратите внимание на то, что в качестве дополнения к ioctl.hсуществуют два главных заголовочных файла, в которых определены вызовы ioctl(), обрабатывающие VC. В файле vt.hопределяются вызовы, начинающиеся с букв VT, и реализуется управление виртуальным терминалом (экраном), как частью виртуальных консолей. В файле kd.hопределены вызовы, которые начинаются с KDи обрабатывают клавиатуру и шрифты. Почти все содержимое kd.hможно проигнорировать, поскольку эти функциональные возможности прекрасно инкапсулируются в утилитах. Однако оно окажется весьма полезным при выдаче звуковых сигналов консолью на управляемых частотах.

Данные основные заголовочные файлы также определяют структуры, которые используются с ioctl().

Структура vt_modeприменяется для поиска и изменения текущей VC:

struct vt_mode {

char mode;

char waitv;

short relsig;

short acqsig;

short frsig;

};

• Переменная modeпринимает одно из двух значений: VT_AUTO(вынуждает ядро автоматически переключать консоли во время нажатия клавиш или при получении запроса от программы на переключение VC) или VT_PROCESS(предписывает ядру запрашивать подтверждение прежде чем переключать консоли).

• Переменная waitvне используется, однако для совместимости с SVR4 ей нужно присвоить значение 1.

• Переменная relsigименует сигнал, который должно сгенерировать ядро для передачи в процесс запроса на освобождение VC.

• Переменная acqsigименует сигнал, который должно сгенерировать ядро для извещения процесса о том, что он получает VC.

• Переменная frsigне используется, однако для совместимости с SVR4 ей нужно присвоить значение 0.

struct vt_stat {

unsigned short v_active;

unsigned short v_signal;

unsigned short v_state;

};

• Переменная v_activeхранит количество VC, активных в данный момент.

• Переменная v_signalне реализована.

• Переменная v_stateхранит битовую маску, сообщающую, какие из первых 16 VC открыты в данный момент (в системе Linux поддерживается до 63 VC). В системе Linux редко появляется смысл консультироваться с данной маской, поскольку она недостаточно велика, чтобы содержать полную информацию. В большинстве случаев вам понадобится знать только номера ряда открытых консолей, которые вы можете извлечь с помощью функции VT_OPENQRY(рассматривается далее в этой главе).

20.2. Выдача звукового сигнала

Заставить консоль генерировать звуковой сигнал в течение определенного периода времени на указанной частоте совсем не сложное дело. Для этого существуют два способа. Первый состоит во включении или отключении постоянной тональной посылки. Команда KIOCSOUNDотключает звук, если ее аргумент равен нулю. В противном случае она устанавливает частоту звука (причем довольно необычным способом, как показано в следующем коде).

void turn_tone_on(int fd, int hertz) {

ioctl(fd, KIOCSOUND, 1193180/hertz)

}

void turn_tone_off(int fd) {

ioctl(fd, KIOCSOUND, 0)

}

Вторым вариантом для выдачи консолью звукового сигнала является применение команды управления вводом-выводом KDMKTONE. Она включает тональную посылку на время, указанное в тиках системных часов (jiffy). К сожалению, время одного тика в различных архитектурах разное. Макрос HZ, определенный sys/param.h, позволяет получить количество тиков в секунду. Функция tone(), показанная ниже, демонстрирует, как извлекать количество тиков в сотых долях секунды и значение макроса HZ [151] Данный интерфейс имеет недостаток. Для него необходимо устанавливать некоторые постоянные доли секунды и осуществлять преобразование. Макрос HZ больше не является константой даже на отдельной платформе. Однако, по крайней мере, для архитектуры Intel i86 Линус Торвальдс установил, что все определенные интерфейсы в отношении HZ должны представлять синтетический интерфейс в 100 Гц. Возможно, что в будущем периодические системные часы исчезнут, в таком случае тики станут полностью искусственным понятием. .

#include

void tone(int fd, int hertz, int hundredths) {

unsigned int ticks = hundredths * HZ / 100;

/* ticks & 0xffff не будет работать, если ticks — 0xf0000;

* вместо этого нужно округлить до наибольшего допустимого значения */

if (ticks > 0xffff) ticks = 0xffff;

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

Интервал:

Закладка:

Сделать


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

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




Разработка приложений в среде Linux. Второе издание отзывы


Отзывы читателей о книге Разработка приложений в среде Linux. Второе издание, автор: Майкл Джонсон. Читайте комментарии и мнения людей о произведении.


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

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