Разработка Linux-приложений Год издания: 2012 Автор: Колисниченко Д. Н. Издательство: БХВ-Петербург ISBN: 978-5-9775-0747-9 Серия: Профессиональное программирование Язык: Русский Формат: PDF Качество: Издательский макет или текст (eBook) Количество страниц: 431 Описание: Рассмотрены основные аспекты программирования в Linux: от программирования на языках командных оболочек bash и tcsh до создания приложений с графическим интерфейсом с использованием библиотек Tk, glib, GTK+ и средства dialog. Подробно дано программирование на C/C++ в Linux: использование компилятора gcc, ввод/вывод в Linux, создание многопоточных приложений, сетевых приложений архитектуры клиент/сервер, а также разработка модулей ядра для современной линейки ядер. Описан популярный среди разработчиков утилит язык TCL. Особое внимание уделено отладке и оптимизации программ, рассмотрены отладчик gdb и профайлер gprof.
Примеры страниц
Оглавление
Введение ...................................................................................................................................... 11 ЧАСТЬ I. ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ КОМАНДНОЙ ОБОЛОЧКИ ................................................................................................................ 13 Глава 1. Командные интерпретаторы ............................................................................................... 14 1.1. Файл /etc/shells ....................................................................................................................... 14 1.2. Оболочка sh ............................................................................................................................ 15 1.3. Оболочка csh .......................................................................................................................... 16 1.4. Оболочка ksh .......................................................................................................................... 16 1.5. Оболочка bash ........................................................................................................................ 17 1.6. Оболочка zsh ........................................................................................................................... 17 1.7. Оболочка tcsh ......................................................................................................................... 18 1.8. Оболочка ash .......................................................................................................................... 19 1.9. Выбор оболочки ..................................................................................................................... 19 Глава 2. Командный интерпретатор bash ......................................................................................... 20 2.1. Настройка bash ....................................................................................................................... 20 2.2. Автоматизация задач с помощью bash................................................................................. 22 2.3. Привет, мир! ........................................................................................................................... 23 2.4. Использование переменных в собственных сценариях ...................................................... 23 2.5. Передача параметров сценарию ........................................................................................... 25 2.6. Массивы и bash ...................................................................................................................... 25 2.7. Циклы ...................................................................................................................................... 26 2.8. Условные операторы ............................................................................................................. 27 2.9. Функции .................................................................................................................................. 28 2.10. Примеры сценариев ............................................................................................................. 28 2.10.1. Сценарий мониторинга журнала .............................................................................. 28 2.10.2. Переименование файлов ........................................................................................... 29 2.10.3. Преобразование систем счисления .......................................................................... 30 Глава 3. Создание сценариев на tcsh ................................................................................... 31 3.1. Использование tcsh ................................................................................................................ 31 3.2. Конфигурационные файлы tcsh ............................................................................................ 32 3.3. Создание сценариев на tcsh ................................................................................................... 33 3.3.1. Переменные, массивы и выражения ............................................................................ 33 3.3.2. Чтение ввода пользователя......................................................................................... 36 3.3.3. Переменные оболочки tcsh ......................................................................................... 36 3.3.4. Управляющие структуры ............................................................................................ 38 Условный оператор if .......................................................................................................... 38 Условный оператор if..then..else ...................................................................................... 39 Оператор foreach ......................................................................................................... 40 Оператор while ............................................................................................................ 41 Оператор switch ........................................................................................................... 41 3.3.5. Встроенные команды tcsh .......................................................................................... 42 Глава 4. Пакет dialog: псевдографический интерфейс пользователя ........................................ 45 4.1. Необходимость в графическом интерфейсе ........................................................................ 45 4.2. Простейшее диалоговое окно ............................................................................................... 46 4.3. Информационное окно .......................................................................................................... 47 4.4. Ввод текста ............................................................................................................................. 49 4.5. Создание меню ....................................................................................................................... 51 4.6. Проблема выбора: зависимые и независимые переключатели .................................................... 52 4.7. Выбор даты и времени .......................................................................................................... 54 4.8. Индикатор ............................................................................................................................... 55 4.9. Диалог выбора файла ............................................................................................................. 56 4.10. Дополнительные возможности ........................................................................................... 57 Глава 5. Компилятор gcc и вспомогательные программы ................................................................ 60 5.1. Выбор редактора .................................................................................................................... 60 5.2. Компилятор gcc ...................................................................................................................... 61 5.2.1. Установка компилятора .............................................................................................. 61 5.2.2. Компиляция первой программы в Linux ........................................................................ 62 5.2.3. Опции компилятора .................................................................................................... 63 5.3. Автоматическая сборка программ ........................................................................................ 65 5.3.1. Введение в автоматическую сборку .......................................................................... 65 5.3.2. Синтаксис Makefile ..................................................................................................... 66 ЧАСТЬ II. ОСНОВЫ ПРОГРАММИРОВАНИЯ НА C В LINUX ........................................................... 59 Глава 6. Библиотеки. Автоматическая сборка библиотек ........................................................... 71 6.1. Динамические и статические библиотеки............................................................................ 71 6.2. Создание статической библиотеки ....................................................................................... 73 6.3. Создание динамической библиотеки.................................................................................... 75 Глава 7. Переменные окружения ............................................................................................... 78 7.1. Еще один способ передачи параметров ............................................................................... 78 7.2. Что такое окружение? ............................................................................................................ 78 7.3. Чтение переменных окружения в вашей программе .......................................................... 80 7.4. Модификация окружения ...................................................................................................... 81 Глава 8. Ввод/вывод в Linux ...................................................................................................... 83 8.1. Понятие ввода/вывода. Перенаправление ввода/вывода в командной строке ........................... 83 8.2. Библиотечные функции C для организации ввода/вывода ................................................. 85 8.3. Низкоуровневый ввод/вывод ................................................................................................ 89 8.3.1. Системные вызовы файлового ввода/вывода ........................................................... 89 8.3.2. Системный вызов creat() ............................................................................................ 92 8.3.3. Чтение файла: системные вызовы open() и read() .................................................... 93 8.3.4. Системный вызов write() ............................................................................................ 95 8.3.5. Системный вызов lseek()............................................................................................. 97 ЧАСТЬ III. СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ ........................................................................ 99 Глава 9. Концепция многозадачности ..................................................................................... 100 9.1. Основы многозадачности Linux .......................................................................................... 100 9.1.1. Иерархия процессов .................................................................................................. 100 9.1.2. Аварийное завершение процесса ............................................................................. 102 9.1.3. Программа top: кто больше всех расходует процессорное время ........................ 105 9.1.4. Команды nice и renice: изменение приоритета процесса ....................................... 107 9.2. Функция system() .................................................................................................................. 107 Глава 10. Системные вызовы для работы с процессами ........................................................ 109 10.1. Создание и запуск процессов ............................................................................................ 109 10.1.1. Модели описания состояний процессов ....................................................................... 109 10.1.2. Особенности fork() .................................................................................................. 111 10.1.3. Семейство функций exec ........................................................................................ 113 10.2. Системный вызов wait(): ожидание завершения дочернего процесса ........................... 117 10.3. Обработка сигналов ........................................................................................................... 119 10.4. Получение информации о процессе ................................................................................. 120 Глава 11. Многопоточные приложения ....................................................................................... 122 11.1. Введение в потоки ............................................................................................................. 122 11.2. Функция pthread_create() .................................................................................................. 123 11.3. Передача аргументов потоковой функции ....................................................................... 126 11.4. Правильное завершение потока: функция pthread_exit()................................................ 128 11.5. Избавляемся от бесконечного цикла: функция pthread_join() ....................................... 129 11.6. Получение информации о потоке ..................................................................................... 132 11.7. Прерывание потока ............................................................................................................ 132 Глава 12. Взаимодействие процессов ............................................................................................ 133 12.1. Способы взаимодействия .................................................................................................. 133 12.2. Каналы ................................................................................................................................ 133 12.3. Именованные каналы типа FIFO ...................................................................................... 137 12.4. Очереди сообщений ........................................................................................................... 140 12.4.1. Межпроцессное взаимодействие System V ........................................................... 140 12.4.2. Структуры ядра для работы с очередями .............................................................. 141 12.4.3. Создание очереди сообщений ................................................................................ 143 12.4.4. Постановка и чтение сообщений ........................................................................... 145 12.5. Семафоры ................................................................................................................ 149 12.5.1. Введение в семафоры ............................................................................................. 149 12.5.2. Структуры ядра ....................................................................................................... 149 12.5.3. Создание набора семафоров................................................................................... 150 12.5.4. Операции над семафорами ..................................................................................... 151 12.5.5. Управление семафором .......................................................................................... 152 12.6. Разделяемые сегменты памяти ......................................................................................... 154 12.6.1. Структуры ядра ....................................................................................................... 154 12.6.2. Создание разделяемого сегмента памяти и привязка к нему ........................................ 154 12.6.3. Демонстрационная программа ..................................................................................... 156 Глава 13. Создание модуля ядра ............................................................................................. 158 13.1. Что такое модуль ядра ....................................................................................................... 158 13.2. Команды lsmod, insmod, modprobe ................................................................................... 159 13.3. Установка необходимых пакетов ..................................................................................... 161 13.4. Ваш первый модуль ........................................................................................................... 162 13.5. Компиляция модуля ........................................................................................................... 165 13.6. Тестируем наш модуль ...................................................................................................... 168 13.7. Сборка сложных модулей ................................................................................................. 172 13.8. Настоящее программирование ядра ................................................................................. 172 13.8.1. Отличие обычных программ от модулей ядра ................................................................ 172 13.8.2. Пространства, пространства и еще раз пространства .................................................. 173 13.8.3. Драйверы устройств и ядро .................................................................................... 174 13.9. Символьные устройства ............................................................................................ 175 13.9.1. Возможные операции ............................................................................................. 175 13.9.2. Регистрация устройства .......................................................................................... 177 13.9.3. Драйвер абстрактного символьного устройства ......................................................... 177 13.10. Создание файла в /proc ........................................................................................... 183 13.11. Полезный пример: клавиатурный шпион ...................................................................... 187 ЧАСТЬ IV. ФАЙЛОВАЯ СИСТЕМА LINUX ................................................................................... 193 Глава 14. Введение в файловую систему ................................................................................. 194 14.1. Родные файловые системы Linux ..................................................................................... 194 14.2. Особенности файловой системы Linux ............................................................................ 195 14.2.1. Имена файлов в Linux ............................................................................................. 195 14.2.2. Файлы и устройства ................................................................................................ 196 14.2.3. Корневая файловая система и монтирование ....................................................... 197 14.2.4. Стандартные каталоги Linux .................................................................................. 197 14.3. Внутреннее строение файловой системы ........................................................................ 198 14.4. Монтирование файловых систем ...................................................................................... 201 14.4.1. Команды mount и umount ........................................................................................ 201 14.4.2. Файлы устройств и монтирование ......................................................................... 202 Жесткие диски ........................................................................................................... 202 Приводы оптических дисков .................................................................................... 204 Дискеты ..................................................................................................................... 204 Флешки и USB-диски ............................................................................................... 204 14.4.3. Опции монтирования файловых систем................................................................ 205 14.4.4. Монтирование разделов при загрузке ................................................................... 206 14.4.5. Подробно о UUID и файле /etc/fstab ...................................................................... 208 14.4.6. Системный вызов mount() ...................................................................................... 210 Глава 15. Операции над каталогами ..................................................................................... 213 15.1. Команды для работы с каталогами ................................................................................... 213 15.2. Функции для работы с каталогами ................................................................................... 215 15.2.1. Изменение текущего каталога ................................................................................ 215 15.2.2. Открываем, читаем и закрываем каталог .............................................................. 215 15.2.3. Получение информации о файлах ......................................................................... 217 15.2.4. Создание и удаление каталога ............................................................................... 219 Глава 16. Операции с файлами ............................................................................................ 220 16.1. Команды для работы с файлами ....................................................................................... 220 16.2. Системные вызовы для работы с файлами ...................................................................... 223 16.2.1. Переименование файла: rename() .......................................................................... 223 16.2.2. Удаление файла и каталогов: unlink() и rmdir() .................................................... 223 16.2.3. Системный вызов umask() ...................................................................................... 224 16.2.4. Работа со ссылками ................................................................................................. 224 Глава 17. Получение информации о файловой системе ............................................................ 226 17.1. Список смонтированных файловых систем ....................................................................... 226 17.2. Функции basename() и getcwd() ........................................................................................ 229 Глава 18. Права доступа к файлам и каталогам ....................................................................... 230 18.1. Изменение прав доступа. Системный вызов chmod() ..................................................... 230 18.2. Смена владельца файла. Системный вызов chown() ....................................................... 233 Глава 19. Псевдофайловые системы ........................................................................................ 234 19.1. Что такое псевдофайловая система .................................................................................. 234 19.2. Виртуальная файловая система sysfs ................................................................................ 235 19.3. Виртуальная файловая система /proc ............................................................................... 235 19.3.1. Информационные файлы ........................................................................................ 236 19.3.2. Файлы, позволяющие изменять параметры ядра ................................................. 236 19.3.3. Файлы, изменяющие параметры сети ................................................................... 237 19.3.4. Файлы, изменяющие параметры виртуальной памяти ............................................ 238 19.3.5. Файлы, позволяющие изменить параметры файловых систем ................................... 238 19.3.6. Как сохранить изменения ....................................................................................... 238 ЧАСТЬ V. СЕТЕВОЕ ПРОГРАММИРОВАНИЕ ................................................................................. 241 Глава 20. Введение в TCP/IP ...................................................................................................... 242 20.1. Модель OSI ......................................................................................................................... 242 20.2. Что такое протокол ............................................................................................................ 244 20.3. Адресация компьютеров ................................................................................................... 245 Глава 21. Программирование сокетов: теория .............................................................................. 249 21.1. Что такое сокет ................................................................................................................... 249 21.2. Создание и связывание сокета .......................................................................................... 250 21.3. Установление связи с удаленным компьютером ................................................................... 252 21.4. Передача данных ................................................................................................................ 254 21.5. Завершение сеанса связи ................................................................................................... 255 Глава 22. Программирование сокетов: практика .......................................................................... 256 22.1. Создание приложения клиент/сервер ............................................................................... 256 22.1.1. Программа-сервер ................................................................................................... 256 22.1.2. Программа-клиент .................................................................................................. 259 22.2. Параметры сокета .............................................................................................................. 260 8 Оглавление 22.3. Сигналы, связанные с сокетами ........................................................................................ 263 22.4. Неблокирующие операции ................................................................................................ 264 ЧАСТЬ VI. СОЗДАНИЕ ГРАФИЧЕСКОГО ИНТЕРФЕЙСА СРЕДСТВАМИ TCL/TK ................................................................................................................. 265 Глава 23. Введение в TCL/Tk ..................................................................................................... 266 23.1. Знакомство с TCL .............................................................................................................. 266 23.2. Установка TCL/Tk ............................................................................................................. 266 23.3. Первая программа .............................................................................................................. 267 Глава 24. Синтаксис TCL ........................................................................................................... 270 24.1. Знакомство с синтаксисом TCL ........................................................................................ 270 24.1.1. Формат TCL-сценария ............................................................................................ 270 24.1.2. Команды puts и format: вывод и форматирование строки ........................................... 271 24.1.3. Группировка аргументов ........................................................................................ 272 24.1.4. Переменные ............................................................................................................. 272 24.1.5. Процедуры ............................................................................................................... 274 24.1.6. Получаем ввод пользователя.................................................................................. 274 24.1.7. Математические операции ..................................................................................... 275 24.1.8. Условная команда if ................................................................................................ 276 24.1.9. Команда while .......................................................................................................... 277 24.1.10. Команда for ............................................................................................................ 277 24.2. Строки ........................................................................................................................ 277 24.2.1. Команда string ......................................................................................................... 277 24.2.2. Сравнение строк ...................................................................................................... 279 24.2.3. Получаем информацию о строках ............................................................................ 280 24.2.4. Модификация строк ................................................................................................ 282 24.2.5. Конкатенация строк ................................................................................................ 283 24.3. Списки ..................................................................................................................... 283 24.3.1. Команда list: создание списка ................................................................................ 283 24.3.2. Команда concat: слияние списков .......................................................................... 284 24.3.3. Команда lappend: добавление элемента в конец списка ........................................... 284 24.3.4. Доступ к элементам списка .................................................................................... 284 24.3.5. Вставка новых элементов ....................................................................................... 285 24.3.6. Замена и удаление элементов списка .................................................................... 285 24.3.7. Поиск элемента ....................................................................................................... 285 24.3.8. Сортировка списка .................................................................................................. 287 24.3.9. Преобразование строки в список и обратно ............................................................... 287 24.3.10. Цикл foreach .......................................................................................................... 288 24.4. Массивы .............................................................................................................................. 289 24.4.1. Отличие массивов от списков ................................................................................ 289 24.4.2. Команда array: обработка массивов ...................................................................... 289 24.5. Ошибки начинающих TCL-программистов ..................................................................... 290 Глава 25. Работа с файлами .................................................................................................. 292 25.1. Открываем и закрываем файлы ........................................................................................ 292 25.2. Чтение файла ...................................................................................................................... 293 25.3. Запись файлов .................................................................................................................... 295 25.4. Произвольный доступ к файлу ......................................................................................... 296 Глава 26. Понятие о виджетах .................................................................................................. 297 26.1. Tk-программирование ....................................................................................................... 297 26.2. Компоненты Tk-приложения и имена виджетов .................................................................... 300 Глава 27. Основные элементы графического интерфейса .............................................................. 302 27.1. Команда pack ...................................................................................................................... 302 27.2. Команда button ................................................................................................................... 304 27.3. Команда checkbutton .......................................................................................................... 307 27.4. Зависимые переключатели ................................................................................................ 311 27.5. Создание меню ................................................................................................................... 313 27.6. Поля ввода .......................................................................................................................... 315 27.7. Списки и домашнее задание ............................................................................................. 318 27.8. Программирование событий. Команда bind .................................................................... 319 Глава 28. Многооконный интерфейс ....................................................................................... 321 28.1. Менеджер геометрии grid ................................................................................................. 321 28.1.1. Относительное размещение ................................................................................... 321 28.1.2. Абсолютное размещение ........................................................................................ 323 28.1.3. Объединение ячеек ................................................................................................. 325 28.2. Фреймы ............................................................................................................................... 326 28.3. Создание окон .................................................................................................................... 327 28.4. Сообщения .......................................................................................................................... 328 28.5. Диалоги открытия и сохранения файла ........................................................................... 330 Глава 29. Практический пример .................................................................................................. 332 29.1. Постановка задачи ............................................................................................................. 332 29.2. Создание оболочки ............................................................................................................ 333 29.3. Запуск оболочки ................................................................................................................. 336 29.4. Последние штрихи ............................................................................................................. 336 ЧАСТЬ VII. БИБЛИОТЕКА GTK+ ................................................................................................... 337 Глава 30. Знакомство с библиотекой ........................................................................................... 338 30.1. Введение в GTK+ ............................................................................................................... 338 30.2. Библиотека GLib ................................................................................................................ 339 30.2.1. Типы данных ........................................................................................................... 339 30.2.2. Строки в GLib .......................................................................................................... 340 30.2.3. Функции распределения памяти ............................................................................ 341 30.2.4. Списки ...................................................................................................................... 342 30.2.5. Использование таймеров ........................................................................................ 344 Глава 31. Первая программа на GTK+ .................................................................................. 346 31.1. Виджеты, контейнеры, сигналы и события ..................................................................... 346 31.2. Создание первой программы ............................................................................................ 347 31.3. Компиляция программы .................................................................................................... 348 31.4. Совершенствование программы. Обработчик сигнала................................................... 351 Глава 32. Виджеты ................................................................................................................ 354 32.1. Подробно о сигналах ......................................................................................................... 354 32.1.1. Сигналы и события ................................................................................................. 354 32.1.2. Виджет EventBox ..................................................................................................... 356 10 Оглавление 32.2. Русский текст и GTK ......................................................................................................... 360 32.3. Состояния виджета ............................................................................................................ 361 32.4. Контейнеры, поля ввода и кнопки .................................................................................... 362 32.5. Зависимые и независимые переключатели ...................................................................... 370 32.6. Список CList ....................................................................................................................... 375 32.7. Диалог выбора файлов ...................................................................................................... 379 32.8. Визуальная разработка интерфейса пользователя .......................................................... 381 Глава 33. Редактор интерфейсов Glade .................................................................................... 382 33.1. Быстрая разработка приложений ...................................................................................... 382 33.2. Установка Glade ................................................................................................................. 383 33.3. Использование Glade ......................................................................................................... 384 33.4. Создание программы ......................................................................................................... 388 33.5. Компиляция программы .................................................................................................... 390 33.6. Рекомендуемая литература ............................................................................................... 390 ЧАСТЬ VIII. ОТЛАДКА И ОПТИМИЗАЦИЯ ПРОГРАММЫ................................................................... 393 Глава 34. Отладка программ. Трассировка системных вызовов ..................................................... 394 34.1. Для чего нужна отладка программ ................................................................................... 394 34.2. Введение в отладчик gdb ................................................................................................... 396 34.3. Пример использования gdb ............................................................................................... 399 34.4. Трассировка системных вызовов ...................................................................................... 404 Глава 35. Оптимизация программы ......................................................................................... 407 35.1. Назначение и основные опции профайлера gprof ........................................................... 407 35.2. Практическое использование профайлера ....................................................................... 408 Заключение .......................................................................................................................... 413 Приложение. Ядро Linux ......................................................................................................... 415 П1. Установка исходных кодов ядра ......................................................................................... 415 П2. Настройка ядра ..................................................................................................................... 417 П3. Компиляция ядра .................................................................................................................. 419 Предметный указатель ................................................................................................................ 423
[only-soft.org].t185923.torrent
Торрент:
Зарегистрирован
[ 2023-09-30 07:55 ]
6 KB
Статус:
√проверено
Скачан:
2 раз
Размер:
19 MB
Оценка:
(Голосов: 0)
Поблагодарили:
0
Профессиональное программирование - Колисниченко Д. Н. - Разработка Linux-приложений [2012, PDF, RUS] скачать торрент бесплатно и без регистрации
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы