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

Здесь есть возможность читать онлайн «Майкл Джонсон - Разработка приложений в среде Linux. Второе издание» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 2007, ISBN: 2007, Издательство: Вильямс, Жанр: ОС и Сети, Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

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

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Разработка приложений в среде Linux. Второе издание»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

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

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

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Разработка приложений в среде Linux. Второе издание», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

1: /* minopen.c */

2:

3: #include

4: #include

5: #include

6: #include

7: #include

8: #include

9: #include

10: #include

11: #include

12: #include

13:

14: int main (int argc, const char ** argv) {

15: int vtnum;

16: int vtfd;

17: struct vt_stat vtstat;

18: char device[32];

19: int child;

20:

21: vtfd = open("/dev/tty", O_RDWR, 0);

22: if (vtfd < 0) {

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

24: exit(1);

25: }

26: if (ioctl(vtfd, VT_GETSTATE, &vtstat) < 0) {

27: perror("minopen: tty не является виртуальной консолью");

28: exit(1);

29: }

30: if (ioctl(vtfd, VT_OPENQRY, &vtnum) < 0) {

31: perror("minopen: нет свободных виртуальных консолей");

32: exit(1);

33: }

34: sprintf(device, "/dev/tty%d", vtnum);

35: if (access(device, (W_OK|R_OK)) < 0) {

36: perror("minopen: недостаточные полномочия на tty");

37: exit(1);

38: }

39: child = fork();

40: if (child == 0) {

41: ioctl(vtfd, VT_ACTIVATE, vtnum);

42: ioctl(vtfd, VT_WAITACTIVE, vtnum);

43: setsid();

44: close(0); close(1); close(2);

45: close(vtfd);

46: vtfd = open(device, O_RDWR, 0); dup(vtfd); dup(vtfd);

47: execlp("/bin/bash", "bash", NULL);

48: }

49: wait(&child);

50: ioctl(vtfd, VT_ACTIVATE, vtstat.v_active);

51: ioctl(vtfd, VT_WAITACTIVE, vtstat.v_active);

52: ioctl(vtfd, VT_DISALLOCATE, vtnum);

53: exit(0);

54: }

Глава 21

Консоль Linux

Консоль Linux, как правило, имитирует последовательный терминал. Выводя специальные последовательности символов в компонент консоли, можно управлять всеми аспектами воспроизведения на экране. Для вывода информации на экран обычно применяются S-Lang, curses или ряд других библиотек рисования на экране; они используют упомянутые управляющие последовательности. Консоль можно также читать и модифицировать через альтернативный полноэкранный интерфейс, который особенно полезен для некоторых специализированных программ.

Программисты для DOS, впервые сталкиваясь с программированием для Linux, обнаруживают пугающий их факт. Оказывается, вывод символов на экран — это не просто инициализация указателя на адрес экрана в памяти и последующая запись прямо через него. Некоторые даже жалуются в полный голос на эту "отсталую" систему, которая вынуждает их делать вид, что они выводят информацию в последовательный терминал, вписывая между символами управляющие последовательности. Последние выводятся на экран для управления перемещением курсора, цветом, очисткой экрана и так далее.

Существует несколько веских причин для того, чтобы рассматривать консоль как фиктивный последовательный терминал. И не последняя из них заключается в том, что когда программа уже активизирована на последовательном терминале, она все еще работает. Еще более важным является то, что программа корректно работает в сетях (в наше время Internet), а также в окне терминального эмулятора под X или каким-либо другим графическим интерфейсом пользователя. Более того, удаленно работающие программы (либо через сеть, либо через последовательное соединение) соответствующим образом выводят информацию на вашу консоль.

Кроме того, вы заметите, что управляющие коды являются рациональными низкоуровневыми интерфейсами для экрана. Они также служат хорошей основой для построения примитивов более высокого уровня вроде модуля curses, описанного в [36]. И это не просто случайность; последовательные терминалы являются весьма уважаемой технологией, которая годами превосходно отвечает фактическим потребностям программистов. Консоль Linux основана на наиболее популярном семействе последовательных терминалов, наследников DEC VT100.

Большинство управляющих последовательностей используют символ перехода (escape) ANSI, который не имеет печатного представления. Мы будем следовать библиотекам termcapи terminfo,в которых для обозначения символа перехода ANSI применяется ^[. Имейте в виду при чтении, что они иногда ссылаются на тот же самый символ, как на . Всюду в данной книге, как и в termcapи terminfo, выражение ^Cуказывает на символ Control-C.

21.1. Базы данных возможностей

Действия, контролируемые заданными управляющими последовательностями, часто называются возможностями(capabilities). Некоторые управляющие последовательности совместно используются большим числом терминалов. Многие из таких последовательностей определены в стандарте ANSI X3.64-1979. Почти все терминалы с возможностями поддержки цвета используют одни и те же последовательности для выбора цветов изображения. При этом многие терминалы поддерживают совершенно различные управляющие последовательности. Например, на терминале Wyse 30 нажатие передает последовательность ^A@\r, тогда как на консоли Linux — последовательность ^[[[А. Аналогично, для того, чтобы переместить курсор вверх на Wyse 30, нужно послать символ ^K, а на консоли Linux — последовательность ^[[А. Для создания программы, которая может работать на любом терминале, вам крайне необходим метод абстрагирования подобных различий, который позволит программировать возможности, а не необработанные последовательности символов.

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

Интервал:

Закладка:

Сделать

Похожие книги на «Разработка приложений в среде Linux. Второе издание»

Представляем Вашему вниманию похожие книги на «Разработка приложений в среде Linux. Второе издание» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Геше Джампа Тинлей - Лоджонг (второе издание)
Геше Джампа Тинлей
Алексей Филатов - Люди «А». Второе издание
Алексей Филатов
Отзывы о книге «Разработка приложений в среде Linux. Второе издание»

Обсуждение, отзывы о книге «Разработка приложений в среде Linux. Второе издание» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x