| Нейл Мэтью Ричард Стоунс Основы программирования в Linux 4-е издание | 1 |
| Об авторах | 1 |
| Благодарности | 1 |
| Предисловие | 1 |
| Введение | 1 |
| Рады предложить вам легкое в использовании руководство по разработке программ для Linux и други... | 1 |
| Для кого эта книга? | 2 |
| Чему посвящена книга? | 2 |
| Что вам потребуется для использования книги? | 2 |
| Исходный программный код | 3 |
| Для работы с примерами книги можно ввести программный код вручную или воспользоваться сопровод... | 3 |
| Замечание, касающееся программного кода примеров | 3 |
| Общедоступная лицензия проекта GNU | 3 |
| Стилевое оформление, принятое в книге | 3 |
| Ошибки | 4 |
| Сайт p2p.wrox.com | 4 |
| Глава 1 Приступая к работе | 4 |
| В этой главе вы узнаете, что такое ОС Linux и как она связана со своим прообразом — ОС UNIX, по... | 4 |
| Введение в UNIX, Linux и проект GNU | 4 |
| В последние годы ОС Linux стала заметным явлением. И дня не проходит без того или иного упомин... | 4 |
| Что такое ОС UNIX? | 4 |
| Что такое Linux? | 5 |
| Проект GNU и Фонд свободного ПО | 5 |
| Дистрибутивы Linux | 6 |
| Программирование в ОС Linux | 6 |
| Многие думают, что программирование в Linux означает применение языка программирования С. Изве... | 6 |
| Linux-программы | 6 |
| Текстовые редакторы | 7 |
| Компилятор языка С | 7 |
| Маршрутная карта системы разработки | 7 |
| Получение справки | 10 |
| Резюме | 11 |
| Глава 2 Программирование средствами командной оболочки | 11 |
| Начав книгу с программирования в ОС Linux на языке С, теперь мы сделаем отступление и остановим... | 11 |
| Почему программа в командной оболочке? | 11 |
| Немного теории | 11 |
| Что такое командная оболочка? | 12 |
| Каналы и перенаправление | 12 |
| Прежде чем заняться подробностями программ командной оболочки, необходимо сказать несколько сл... | 12 |
| Перенаправление вывода | 12 |
| Перенаправление ввода | 13 |
| Каналы | 13 |
| Командная оболочка как язык программирования | 13 |
| Теперь, когда вы увидели некоторые базовые операции командной оболочки, самое время перейти к ... | 13 |
| Интерактивные программы | 13 |
| Создание сценария | 14 |
| Превращение сценария в исполняемый файл | 15 |
| Синтаксис командной оболочки | 15 |
| Теперь, когда мы рассмотрели пример простой программы командной оболочки, пришло время углубит... | 15 |
| Переменные | 15 |
| Условия | 17 |
| Управляющие структуры | 19 |
| Функции | 24 |
| Команды | 25 |
| Выполнение команд | 34 |
| Встроенные документы | 36 |
| Отладка сценариев | 36 |
| По направлению к графическому режиму — утилита dialog | 37 |
| Соединяем все вместе | 39 |
| Теперь, когда вы познакомились с основными функциональными возможностями командной оболочки ка... | 39 |
| Требования | 39 |
| Проектирование | 39 |
| Резюме | 43 |
| Глава 3 Работа с файлами | 43 |
| В этой главе будут рассматриваться файлы и каталоги ОС Linux и способы работы с ними. Вы научит... | 43 |
| Структура файла в Linux | 44 |
| Вы можете спросить: "Зачем вы останавливаетесь на структуре файла? Я уже знаком с ней." Дело в... | 44 |
| Каталоги | 44 |
| Файлы и устройства | 44 |
| Системные вызовы и драйверы устройств | 45 |
| Библиотечные функции | 45 |
| Низкоуровневый доступ к файлам | 45 |
| У каждой выполняющейся программы, называемой процессом, есть ряд связанных с ней дескрипторов ... | 45 |
| write | 46 |
| read | 46 |
| open | 46 |
| Исходные права доступа | 47 |
| Другие системные вызовы для управления файлами | 49 |
| Стандартная библиотека ввода/вывода | 50 |
| Стандартная библиотека ввода/вывода (stdio) и ее заголовочный файл stdio.h предоставляют униве... | 50 |
| fopen | 51 |
| fread | 51 |
| fwrite | 51 |
| fclose | 51 |
| fflush | 51 |
| fseek | 52 |
| fgetc, getc и getchar | 52 |
| fputc, putc и putchar | 52 |
| fgets и gets | 52 |
| Форматированные ввод и вывод | 52 |
| Для создания вывода управляемого вида существует ряд библиотечных функций, с которыми вы, возм... | 52 |
| printf, fprintf и sprintf | 52 |
| scanf, fscanf и sscanf | 54 |
| Другие потоковые функции | 55 |
| Ошибки потока | 55 |
| Потоки и дескрипторы файлов | 55 |
| Ведение файлов и каталогов | 56 |
| Стандартные библиотеки и системные вызовы обеспечивают полный контроль над созданием и ведение... | 56 |
| chmod | 56 |
| chown | 56 |
| unlink, link и symlink | 56 |
| mkdir и rmdir | 56 |
| chdir и getcwd | 56 |
| Просмотр каталогов | 57 |
| Широко распространенная проблема систем Linux — просмотр каталогов, т.е. определение файлов, р... | 57 |
| opendir | 57 |
| readdir | 57 |
| telldir | 57 |
| seekdir | 57 |
| closedir | 57 |
| Ошибки | 59 |
| Как вы видели, многие системные вызовы и функции, описанные в этой главе, могут завершиться ав... | 59 |
| strerror | 59 |
| perror | 59 |
| Файловая система procfs | 59 |
| Более сложные приемы: fcntl и mmap | 61 |
| Теперь мы коснемся приемов, которые вы можете пропустить, поскольку они редко используются. Пр... | 61 |
| fcntl | 61 |
| mmap | 62 |
| Резюме | 63 |
| Глава 4 Окружение Linux | 63 |
| Когда вы пишете программу для ОС Linux (или UNIX и UNIX-подобных систем), следует принимать во ... | 63 |
| Аргументы программы | 63 |
| Когда в ОС Linux или UNIX выполняется программа на языке С, она начинается с функции main. В т... | 63 |
| getopt | 64 |
| getopt_long | 65 |
| Переменные окружения | 66 |
| Мы обсуждали переменные окружения в главе 2. Это переменные, которые могут использоваться для ... | 66 |
| Применение переменных окружения | 67 |
| Переменная environ | 68 |
| Время и дата | 68 |
| Временные файлы | 71 |
| Информация о пользователе | 72 |
| Информация о компьютере | 74 |
| Ведение системных журналов | 75 |
| Ресурсы и ограничения | 77 |
| Резюме | 79 |
| Глава 5 Терминалы | 79 |
| В этой главе вы познакомитесь с некоторыми улучшениями, которые вам, возможно, захочется внести... | 79 |
| Чтение с терминала и запись на терминал | 80 |
| В главе 3 вы узнали, что, когда программа запускается из командной строки, оболочка обеспечива... | 80 |
| Сравнение канонического и неканонического режимов | 80 |
| Обработка перенаправленного вывода | 81 |
| Диалог с терминалом | 82 |
| Драйвер терминала A и общий терминальный интерфейс | 83 |
| Иногда программе нужно более мощные средства управления терминалами, чем простые файловые опер... | 83 |
| Обзор | 83 |
| Аппаратная модель | 83 |
| Структура типа termios | 83 |
| Тип termios — стандартный интерфейс, заданный стандартом POSIX и похожий на интерфейс termio с... | 83 |
| Режимы ввода | 84 |
| Режимы вывода | 84 |
| Режимы управления | 84 |
| Локальные режимы | 85 |
| Специальные управляющие символы | 85 |
| Скорость терминала | 87 |
| Дополнительные функции | 87 |
| Вывод терминала | 89 |
| С помощью структуры типа termios вы управляли вводом с клавиатуры, но было бы хорошо иметь так... | 89 |
| Тип терминала | 89 |
| Установите тип вашего терминала | 89 |
| Применение характеристик terminfo | 90 |
| Обнаружение нажатий клавиш | 93 |
| Пользователи, программировавшие в ОС MS-DOS, часто ищут в ОС Linux эквивалент функции kbhit, к... | 93 |
| Виртуальные консоли | 94 |
| Псевдотерминалы | 94 |
| Резюме | 94 |
| Глава 6 Управление текстовыми экранами с помощью библиотеки curses | 94 |
| В главе 5 вы узнали, как улучшить управление вводом символов и как обеспечить вывод символов сп... | 94 |
| Компиляция с библиотекой curses | 95 |
| Терминология библиотеки curses и общие представления | 95 |
| Экран | 96 |
| Как: вы уже видели, все программы с использованием curses должны начинаться с вызова функции i... | 96 |
| Вывод на экран | 96 |
| Считывание с экрана | 97 |
| Очистка экрана | 97 |
| Перемещение курсора | 97 |
| Атрибуты символов | 98 |
| Клавиатура | 98 |
| Наряду с предоставлением интерфейса, облегчающего управление экраном, библиотека curses также ... | 98 |
| Режимы клавиатуры | 99 |
| Клавиатурный ввод | 99 |
| Окна | 100 |
| До сих пор вы использовали терминал как средство полноэкранного вывода. Это вполне подходит дл... | 100 |
| Структура WINDOW | 100 |
| Универсальные функции | 100 |
| Перемещение и обновление окна | 100 |
| Оптимизация обновлений экрана | 102 |
| Вложенные окна | 102 |
| Дополнительная клавиатура | 103 |
| Применение цвета | 104 |
| В прошлом очень немногие терминалы ввода/вывода поддерживали цвета, поэтому у большей части са... | 104 |
| Переопределение цветов | 105 |
| Панели | 105 |
| Приложение, управляющее коллекцией компакт-дисков | 106 |
| Теперь, когда вы узнали о средствах, которые предлагает библиотека curses, можно разработать т... | 106 |
| Начало нового приложения для работы с коллекцией компакт-дисков | 106 |
| Взгляд на функцию main | 107 |
| Формирование меню | 107 |
| Управление базой данных | 108 |
| Запросы к базе данных компакт-дисков | 110 |
| Резюме | 112 |
| Глава 7 Управление данными | 112 |
| В предыдущих главах мы касались темы ограниченности ресурсов. В этой главе мы собираемся рассмо... | 112 |
| Управляемая память | 112 |
| Во всех компьютерных системах память — дефицитный ресурс. Не важно, сколько памяти доступно, е... | 112 |
| Простое выделение памяти | 112 |
| Выделение огромных объемов памяти | 113 |
| Неправильное обращение к памяти | 114 |
| Указатель null | 114 |
| Освобождение памяти | 115 |
| Другие функции распределения памяти | 115 |
| Блокировка файлов | 116 |
| Блокировка файлов — очень важная составляющая многопользовательских многозадачных операционных... | 116 |
| Создание файлов с блокировкой | 116 |
| Блокировка участков файла | 117 |
| Применение вызовов read и write при наличии блокировки | 119 |
| Конкурирующие блокировки | 121 |
| Другие команды блокировок | 123 |
| Взаимоблокировки | 123 |
| Базы данных | 123 |
| Вы научились использованию файлов для хранения данных, зачем применять для этого базы данных? ... | 123 |
| База данных dbm | 123 |
| Подпрограммы dbm | 124 |
| Функции доступа dbm | 124 |
| Дополнительные функции dbm | 126 |
| Приложение для работы с коллекцией компакт-дисков | 127 |
| Теперь, когда вы узнали об окружении и управлении данными, самое время обновить приложение. Ка... | 127 |
| Обновление проектного решения | 127 |
| Приложение управления базой данных компакт-дисков, использующее dbm | 127 |
| Резюме | 136 |
| Глава 8 MySQL | 136 |
| Теперь, когда вы изучили основы управления данными с помощью обычных файлов и затем посредством... | 136 |
| Установка | 136 |
| Какой бы вариант системы Linux вы не предпочли, вероятно, для него существует доступная версия... | 136 |
| Пакеты MySQL | 136 |
| Настройка после установки | 137 |
| Устранение неисправностей после установки | 139 |
| Администрирование MySQL | 139 |
| Группа программ-утилит, включенных в дистрибутив MySQL, облегчает процесс администрирования ба... | 139 |
| Команды | 139 |
| Создание пользователей и наделение их правами доступа | 142 |
| Пароли | 143 |
| Создание базы данных | 143 |
| Типы данных | 143 |
| Создание таблицы | 144 |
| Графические средства | 145 |
| Доступ к данным MySQL из программ на С | 146 |
| Теперь, когда основы СУРБД MySQL остались в стороне, давайте рассмотрим, как, не применяя граф... | 146 |
| Подпрограммы подключения | 146 |
| Обработка ошибок | 148 |
| Выполнение SQL-операторов | 148 |
| Разные функции | 155 |
| Приложение для работы с базой данных компакт-дисков | 156 |
| Сейчас мы покажем, как вы можете создать простую базу данных для хранения информации о ваших к... | 156 |
| Создание таблиц | 156 |
| Вставка данных | 157 |
| Доступ к данным приложения из программы на С | 158 |
| Резюме | 162 |
| Глава 9 Средства разработки | 162 |
| В этой главе рассматриваются средства разработки программ, применяемые в ОС Linux, некоторые из... | 162 |
| Проблемы применения многочисленных исходных файлов | 163 |
| Команда make и make-файлы | 163 |
| Несмотря на то, что у команды make много внутренних сведений и знаний, она не может самостояте... | 163 |
| Синтаксис make-файлов | 163 |
| Опции и параметры make | 163 |
| Комментарии в make-файле | 165 |
| Макросы в make-файле | 165 |
| Множественные задания | 166 |
| Встроенные правила | 167 |
| Суффиксы и шаблоны правил | 167 |
| Управление библиотеками с помощью make | 168 |
| Более сложная тема: make-файлы и подкаталоги | 169 |
| Версия GNU команд make и gcc | 169 |
| Управление исходным кодом | 170 |
| Если вы ушли от простых проектов и особенно если несколько человек работает над проектом, упра... | 170 |
| RCS | 170 |
| SCCS | 173 |
| Сравнение RCS и SCCS | 173 |
| CVS | 173 |
| Subversion | 175 |
| Написание интерактивного справочного руководства | 175 |
| Распространение программного обеспечения | 177 |
| Главная задача, возникающая при распространении программного обеспечения, — гарантия того, что... | 177 |
| Программа patch | 177 |
| Другие утилиты распространения | 178 |
| RPM-пакеты | 179 |
| Диспетчер RPM-пакетов или RPM появился как создатель формата упаковки в дистрибутиве Linux Red... | 179 |
| Работа с файлами RPM-пакетов | 179 |
| Установка RPM-пакетов | 179 |
| Формирование RPM-пакетов | 179 |
| Пакеты других форматов | 183 |
| Среды разработки | 184 |
| Почти все средства, рассматриваемые до сих пор в этой главе, по существу представляют собой ср... | 184 |
| KDevelop | 184 |
| Другие среды разработки | 184 |
| Резюме | 184 |
| Глава 10 Отладка | 184 |
| По утверждению Software Engineering Institute (Институт программных разработок) и IEEE (Institu... | 184 |
| Типы ошибок | 184 |
| Общие методы отладки | 185 |
| Существует несколько разных подходов к отладке и тестированию типовой программы Linux. Обычно ... | 185 |
| Программа с ошибками | 185 |
| Анализ кода | 186 |
| Оснащение средствами контроля | 186 |
| Контролируемое выполнение | 187 |
| Отладка с помощью gdb | 188 |
| Для отладки программы вы можете применять отладчик проекта GNU, gdb. Это очень мощный отладчик... | 188 |
| Запуск gdb | 188 |
| Выполнение программы | 188 |
| Трассировка стека | 188 |
| Просмотр переменных | 189 |
| Вывод листинга программы | 189 |
| Установка точек останова | 190 |
| Вставка исправлений с помощью отладчика | 191 |
| Дополнительные сведения о gdb | 192 |
| Дополнительные средства отладки | 192 |
| Помимо полнофункциональных отладчиков, таких как gdb, Linux-системы обычно предоставляют и дру... | 192 |
| Lint удаление ошибок из ваших программ | 192 |
| Средства, отслеживающие вызовы функций | 194 |
| Выполнение профилирования с помощью prof/gprof | 195 |
| Проверки соблюдения условий | 195 |
| Устранение ошибок использования памяти | 196 |
| Распределение динамической памяти — богатый источник ошибок, которые трудно выявить. Если вы п... | 196 |
| ElectricFence | 197 |
| valgrind | 197 |
| Резюме | 199 |
| Глава 11 Процессы и сигналы | 199 |
| Процессы и сигналы формируют главную часть операционной среды Linux. Они управляют почти всеми ... | 199 |
| Что такое процесс? | 199 |
| Структура процесса | 199 |
| Давайте посмотрим, как организовано сосуществование двух процессов в операционной системе. Есл... | 199 |
| Таблица процессов | 200 |
| Просмотр процессов | 200 |
| Системные процессы | 201 |
| Планирование процессов | 202 |
| Запуск новых процессов | 203 |
| Применив библиотечную функцию system, вы можете заставить программу выполняться из другой прог... | 203 |
| Замена образа процесса | 203 |
| Дублирование образа процесса | 205 |
| Ожидание процесса | 205 |
| Процессы-зомби | 206 |
| Перенаправление ввода и вывода | 207 |
| Потоки | 208 |
| Сигналы | 208 |
| Сигнал — это событие, генерируемое системами UNIX и Linux в ответ на некоторую ситуацию, получ... | 208 |
| Отправка сигналов | 210 |
| Множества сигналов | 212 |
| Резюме | 214 |
| Глава 12 Потоки POSIX | 214 |
| В главе 11 вы видели, как обрабатываются процессы в ОС Linux (и конечно в UNIX). Эти средства о... | 214 |
| Что такое поток? | 214 |
| Достоинства и недостатки потоков | 215 |
| Первая программа с применением потоков | 215 |
| Одновременное выполнение | 217 |
| Синхронизация | 218 |
| В предыдущем разделе вы видели, что два потока выполняются одновременно, но метод переключения... | 218 |
| Синхронизация с помощью семафоров | 218 |
| Синхронизация с помощью мьютексов | 220 |
| Атрибуты потока | 222 |
| Когда мы начали рассматривать потоки, то не обсуждали более сложную тему — атрибуты потока. Те... | 222 |
| Атрибуты планирования потока | 224 |
| Отмена потока | 225 |
| Потоки в изобилии | 226 |
| Резюме | 228 |
| Глава 13 Связь между процессами: каналы | 228 |
| В главе 11 вы видели очень простой способ пересылки сообщений между процессами с помощью сигнал... | 228 |
| Что такое канал? | 228 |
| Каналы процессов | 228 |
| Возможно, простейший способ передачи данных между программами — применение функций popen и pcl... | 228 |
| popen | 228 |
| pclose | 229 |
| Отправка вывода в popen | 229 |
| Теперь, когда вы рассмотрели пример захвата вывода из внешней программы, давайте познакомимся ... | 229 |
| Передача данных большого объема | 230 |
| Как реализован вызов popen | 230 |
| Вызов pipe | 231 |
| Родительский и дочерний процессы | 232 |
| Следующий логический шаг в нашем изучении вызова pipe — разрешить дочернему процессу быть друг... | 232 |
| Чтение закрытых каналов | 233 |
| Каналы, применяемые как стандартные ввод и вывод | 233 |
| Именованные каналы: FIFO | 235 |
| До сих пор вы могли передавать данные только между связанными программами, т.е. программами, к... | 235 |
| Доступ к FIFO | 235 |
| Более сложная тема: применение каналов FIFO в клиент-серверных приложениях | 239 |
| Приложение для работы с базой данных компакт-дисков | 241 |
| Теперь, зная, как применять именованные каналы для реализации простой клиент-серверной системы... | 241 |
| Цели | 241 |
| Реализация | 241 |
| Функции интерфейса клиента | 242 |
| Интерфейс сервера server.c | 245 |
| Канал | 247 |
| Резюме, касающееся приложения | 249 |
| Резюме | 249 |
| Глава 14 Семафоры, совместно используемая память и очереди сообщений | 249 |
| В этой главе мы обсудим набор средств, обеспечивающих взаимодействие процессов и первоначально ... | 249 |
| Семафоры | 249 |
| Когда разрабатываются программы для многопользовательских или многозадачных систем или их комб... | 249 |
| Описание семафора | 250 |
| Теоретический пример | 250 |
| Реализация семафоров в Linux | 250 |
| Применение семафоров | 252 |
| Совместно используемая память | 253 |
| Совместно используемая или разделяемая память — вторая разновидность средств IPC. Она позволяе... | 253 |
| shmget | 254 |
| shmat | 254 |
| shmdt | 254 |
| shmctl | 255 |
| Очереди сообщений | 256 |
| Теперь рассмотрим третье и последнее средство System V IPC: очереди сообщений. Во многом очере... | 256 |
| msgget | 257 |
| msgsnd | 257 |
| msgrcv | 257 |
| msgctl | 258 |
| Приложение для работы с базой данных компакт-дисков | 259 |
| Сейчас подходящий момент для модификации вашего приложения, управляющего базой данных компакт-... | 259 |
| Пересмотр функций сервера | 259 |
| Пересмотр функций клиента | 260 |
| Команды состояния IPC | 261 |
| Несмотря на то, что для соответствия требованиям X/Open этого не требуется, большинство систем... | 261 |
| Отображение состояния семафора | 261 |
| Отображение состояния совместно используемой памяти | 261 |
| Отображение состояния очереди сообщений | 261 |
| Резюме | 261 |
| Глава 15 Сокеты | 261 |
| В этой главе вы познакомитесь с еще одним способом взаимодействия процессов, существенно отлича... | 261 |
| Что такое сокет? | 262 |
| Соединения на базе сокетов | 262 |
| Соединения на базе сокетов можно рассматривать как телефонные звонки в учреждение. Телефонный ... | 262 |
| Атрибуты сокета | 263 |
| Создание сокета | 264 |
| Адреса сокетов | 265 |
| Именование сокета | 265 |
| Создание очереди сокетов | 266 |
| Прием запросов на соединение | 266 |
| Запросы соединений | 266 |
| Закрытие сокета | 267 |
| Обмен данными с помощью сокетов | 267 |
| Порядок байтов на компьютере и в сети | 268 |
| Сетевая информация | 269 |
| До сих пор у клиентских и серверных программ были адреса и номера портов, компилируемые в них.... | 269 |
| Интернет-демон (xinetd/inetd) | 271 |
| Параметры сокета | 272 |
| Множественные клиенты | 272 |
| До сих пор в этой главе вы видели, как применяются сокеты для реализации клиент-серверных сист... | 272 |
| select | 274 |
| Множественные клиенты | 275 |
| Дейтаграммы | 277 |
| Резюме | 278 |
| Глава 16 Программирование в GNOME с помощью GTK+ | 278 |
| До сих пор в этой книге мы обсуждали основные методы программирования в ОС Linux, касающиеся сл... | 278 |
| Введение в систему X | 278 |
| Если вы когда-либо применяли оконную систему рабочего стола в ОС Linux, скорее всего вы исполь... | 278 |
| X-сервер | 278 |
| X-клиент | 279 |
| X-протокол | 279 |
| Xlib | 279 |
| Комплекты инструментов | 279 |
| Оконные менеджеры | 279 |
| Другие способы создания GUI — платформно-независимые оконные API | 279 |
| Введение в GTK+ | 280 |
| Теперь, когда вы познакомились с системой X Window System, самое время рассмотреть комплект ин... | 280 |
| Система типов GLib | 280 |
| Система объектов GTK+ | 280 |
| Знакомство с GNOME | 281 |
| Установка библиотек разработки GNOME/GTK+ | 281 |
| События, сигналы и обратные вызовы | 282 |
| Виджеты упаковочных контейнеров | 283 |
| Виджеты GTK+ | 284 |
| В этом разделе мы рассмотрим API самых популярных виджетов GTK+, которые вы будете применять ч... | 284 |
| GtkWindow | 284 |
| GtkEntry | 285 |
| GtkSpinButton | 286 |
| GtkButton | 287 |
| GtkTreeView | 289 |
| Виджеты GNOME | 291 |
| Меню GNOME | 291 |
| Диалоговые окна | 293 |
| Основная часть любого приложения GUI — взаимодействие с пользователем и информирование его о в... | 293 |
| GtkDialog | 293 |
| Модальное диалоговое окно | 294 |
| Немодальные диалоговые окна | 294 |
| GtkMessageDialog | 295 |
| Приложение для работы с базой данных компакт-дисков | 295 |
| Резюме | 300 |
| Глава 17 Программирование в KDE с помощью Qt | 300 |
| В главе 16 вы познакомились с библиотеками GUI графической среды GNOME/GTK+, предназначенными д... | 300 |
| Введение в KDE и Qt | 300 |
| Установка Qt | 301 |
| Сигналы и слоты | 301 |
| Виджеты Qt | 304 |
| Для каждого случая в Qt есть виджеты, и их подробное рассмотрение займет всю оставшуюся часть ... | 304 |
| QLineEdit | 304 |
| Кнопки Qt | 306 |
| QComboBox | 308 |
| QListView | 310 |
| Диалоговые окна | 311 |
| До сих пор вы создавали подклассы QMainWindow для построения своих интерфейсов. Объекты QMainW... | 311 |
| QDialog | 311 |
| QMessageBox | 312 |
| QInputDialog | 313 |
| Применение qmake для упрощения написания make-файлов | 313 |
| Создание меню и панелей инструментов с помощью KDE | 314 |
| Приложение для работы с базой данных компакт-дисков с использованием KDE/Qt | 315 |
| Теперь, когда вы можете использовать силу и мощь KDE/Qt, пришло время снова обратить внимание ... | 315 |
| MainWindow | 315 |
| AddCdDialog | 317 |
| LogonDialog | 317 |
| main.cpp | 318 |
| Резюме | 319 |
| Глава 18 Стандарты Linux | 319 |
| ОС Linux появилась сначала только как ядро системы. К сожалению, ядро само по себе не очень пол... | 319 |
| Язык программирования С | 319 |
| Язык программирования С — de facto язык программирования ОС Linux, поэтому, для того чтобы пис... | 319 |
| Краткий урок истории | 319 |
| Коллекция компиляторов GNU | 320 |
| Опции gcc | 320 |
| Интерфейсы и Linux Standards Base | 321 |
| Теперь мы собираемся подняться на уровень выше и перейти от программного кода на языке С к рас... | 321 |
| Стандартные библиотеки LSB | 321 |
| Применение стандарта LSB к библиотекам | 322 |
| Инициализация системы LSB | 322 |
| Стандарт устройства файловой системы | 322 |
| Что еще почитать о стандартах? | 324 |
| Резюме | 324 |
В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стандартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов