На главную | Где купить | Авторам и заказчикам | Вакансии | Реклама | Издательство | Каталог | Статьи наших авторов | Контакты | Прайс листы

Основы программирования в Linux, 4-е изд.

Автор Мэтью Н., Стоунс Р.
Название Основы программирования в Linux, 4-е изд.
Серия Внесерийные книги
ISBN 978-5-9775-0289-4
Формат 70*100 1/16
Объем 896
Тематика
Оптовая цена
    Вернуться к описанию книги

Полное содержание

Оглавление Об авторах 1
Благодарности 3
Предисловие 5
Введение 7
Для кого эта книга? 7
Чему посвящена книга? 8
Что вам потребуется для использования книги? 9
Исходный программный код 10
Замечание, касающееся программного кода примеров 11
Общедоступная лицензия проекта GNU 11
Стилевое оформление, принятое в книге 12
Ошибки 13
Сайт p2p.wrox.com 13

Глава 1. Приступая к работе

15
Введение в UNIX, Linux и проект GNU 15
Что такое ОС UNIX? 16
Что такое Linux? 17
Проект GNU и Фонд свободного ПО 18
Дистрибутивы Linux 19
Программирование в ОС Linux 20
Linux-программы 21
Текстовые редакторы 22
Компилятор языка С 22
Маршрутная карта системы разработки 24
Получение справки 31
Резюме 34

Глава 2. Программирование средствами командной оболочки

35
Почему программа в командной оболочке? 36
Немного теории 36
Что такое командная оболочка? 37
Каналы и перенаправление 40
Перенаправление вывода 40
Перенаправление ввода 41
Каналы 41
Командная оболочка как язык программирования 42
Интерактивные программы 42
Создание сценария 44
Превращение сценария в исполняемый файл 45
Синтаксис командной оболочки 47
Переменные 47
Условия 52
Управляющие структуры 55
Функции 68
Команды 71
Выполнение команд 93
Встроенные документы 98
Отладка сценариев 100
По направлению к графическому режиму — утилита dialog 101
Соединяем все вместе 108
Требования 108
Проектирование 108
Резюме 120

Глава 3. Работа с файлами

121
Структура файла в Linux 122
Каталоги 122
Файлы и устройства 123
Системные вызовы и драйверы устройств 125
Библиотечные функции 126
Низкоуровневый доступ к файлам 128
write 128
read 129
open 130
Исходные права доступа 132
Другие системные вызовы для управления файлами 137
Стандартная библиотека ввода/вывода 140
fopen 140
fread 141
fwrite 142
fclose 142
fflush 142
fseek 143
fgetc, getc и getchar 143
fputc, putc и putchar 143
fgets и gets 144
Форматированные ввод и вывод 144
printf, fprintf и sprintf 145
scanf, fscanf и sscanf 147
Другие потоковые функции 149
Ошибки потока 151
Потоки и дескрипторы файлов 151
Ведение файлов и каталогов 152
chmod 152
chown 153
unlink, link и symlink 153
mkdir и rmdir 154
chdir и getcwd 154
Просмотр каталогов 155
opendir 155
readdir 156
telldir 156
seekdir 156
closedir 157
Ошибки 160
strerror 160
perror 161
Файловая система procfs 161
Более сложные приемы: fcntl и mmap 166
fcntl 166
mmap 167
Резюме 170

Глава 4. Окружение Linux

171
Аргументы программы 172
getopt 175
getopt_long 177
Переменные окружения 180
Применение переменных окружения 182
Переменная environ 183
Время и дата 184
Временные файлы 192
Информация о пользователе 194
Информация о компьютере 198
Ведение системных журналов 201
Ресурсы и ограничения 206
Резюме 212

Глава 5. Терминалы

213
Чтение с терминала и запись на терминал 214
Сравнение канонического и неканонического режимов 216
Обработка перенаправленного вывода 217
Диалог с терминалом 219
Драйвер терминала A и общий терминальный интерфейс 222
Обзор 222
Аппаратная модель 223
Структура типа termios 224
Режимы ввода 226
Режимы вывода 226
Режимы управления 227
Локальные режимы 228
Специальные управляющие символы 228
Скорость терминала 232
Дополнительные функции 233
Вывод терминала 238
Тип терминала 238
Установите тип вашего терминала 239
Применение характеристик terminfo 241
Обнаружение нажатий клавиш 247
Виртуальные консоли 250
Псевдотерминалы 251
Резюме 252

Глава 6. Управление текстовыми экранами с помощью библиотеки curses

253
Компиляция с библиотекой curses 254
Терминология библиотеки curses и общие представления 255
Экран 259
Вывод на экран 259
Считывание с экрана 260
Очистка экрана 260
Перемещение курсора 261
Атрибуты символов 261
Клавиатура 264
Режимы клавиатуры 265
Клавиатурный ввод 265
Окна 267
Структура WINDOW 268
Универсальные функции 269
Перемещение и обновление окна 269
Оптимизация обновлений экрана 273
Вложенные окна 274
Дополнительная клавиатура 277
Применение цвета 280
Переопределение цветов 283
Панели 283
Приложение, управляющее коллекцией компакт-дисков 285
Начало нового приложения для работы с коллекцией компакт-дисков 286
Взгляд на функцию main 288
Формирование меню 289
Управление базой данных 291
Запросы к базе данных компакт-дисков 297
Резюме 301

Глава 7. Управление данными

303
Управляемая память 303
Простое выделение памяти 304
Выделение огромных объемов памяти 305
Неправильное обращение к памяти 309
Указатель null 310
Освобождение памяти 312
Другие функции распределения памяти 313
Блокировка файлов 314
Создание файлов с блокировкой 315
Блокировка участков файла 318
Применение вызовов read и write при наличии блокировки 322
Конкурирующие блокировки 328
Другие команды блокировок 332
Взаимоблокировки 332
Базы данных 333
База данных dbm 333
Подпрограммы dbm 335
Функции доступа dbm 337
Дополнительные функции dbm 341
Приложение для работы с коллекцией компакт-дисков 343
Обновление проектного решения 343
Приложение управления базой данных компакт-дисков, использующее dbm 344
Резюме 365

Глава 8. MySQL

367
Установка 368
Пакеты MySQL 368
Настройка после установки 371
Устранение неисправностей после установки 377
Администрирование MySQL 377
Команды 377
Создание пользователей и наделение их правами доступа 383
Пароли 386
Создание базы данных 387
Типы данных 387
Создание таблицы 389
Графические средства 392
Доступ к данным MySQL из программ на C 395
Подпрограммы подключения 396
Обработка ошибок 400
Выполнение SQL-операторов 402
Разные функции 419
Приложение для работы с базой данных компакт-дисков 419
Создание таблиц 421
Вставка данных 424
Доступ к данным приложения из программы на C 427
Резюме 438

Глава 9. Средства разработки

439
Проблемы применения многочисленных исходных файлов 439
Команда make и make-файлы 440
Синтаксис make-файлов 441
Опции и параметры make 441
Комментарии в make-файле 445
Макросы в make-файле 445
Множественные задания 448
Встроенные правила 450
Суффиксы и шаблоны правил 451
Управление библиотеками с помощью make 453
Более сложная тема: make-файлы и подкаталоги 455
Версия GNU команд make и gcc 456
Управление исходным кодом 457
RCS 458
SCCS 465
Сравнение RCS и SCCS 466
CVS 466
Subversion 472
Написание интерактивного справочного руководства 473
Распространение программного обеспечения 477
Программа patch 477
Другие утилиты распространения 479
RPM-пакеты 482
Работа с файлами RPM-пакетов 482
Установка RPM-пакетов 483
Формирование RPM-пакетов 484
Пакеты других форматов 494
Среды разработки 494
KDevelop 495
Другие среды разработки 496
Резюме 497

Глава 10. Отладка

499
Типы ошибок 499
Общие методы отладки 500
Программа с ошибками 501
Анализ кода 504
Оснащение средствами контроля 505
Контролируемое выполнение 507
Отладка с помощью gdb 508
Запуск gdb 509
Выполнение программы 510
Трассировка стека 510
Просмотр переменных 511
Вывод листинга программы 512
Установка точек останова 513
Вставка исправлений с помощью отладчика 517
Дополнительные сведения о gdb 518
Дополнительные средства отладки 519
Lint: удаление ошибок из ваших программ 519
Средства, отслеживающие вызовы функций 523
Выполнение профилирования с помощью prof/gprof 525
Проверки соблюдения условий 526
Устранение ошибок использования памяти 528
ElectricFence 529
valgrind 530
Резюме 534

Глава 11. Процессы и сигналы

535
Что такое процесс? 535
Структура процесса 536
Таблица процессов 538
Просмотр процессов 538
Системные процессы 539
Планирование процессов 542
Запуск новых процессов 544
Замена образа процесса 546
Дублирование образа процесса 548
Ожидание процесса 551
Процессы-зомби 554
Перенаправление ввода и вывода 555
Потоки 557
Сигналы 558
Отправка сигналов 562
Множества сигналов 567
Резюме 572

Глава 12. Потоки POSIX

573
Что такое поток? 573
Достоинства и недостатки потоков 575
Первая программа с применением потоков 576
Одновременное выполнение 581
Синхронизация 583
Синхронизация с помощью семафоров 583
Синхронизация с помощью мьютексов 589
Атрибуты потока 593
Атрибуты планирования потока 598
Отмена потока 599
Потоки в изобилии 602
Резюме 607

Глава 13. Связь между процессами: каналы

609
Что такое канал? 609
Каналы процессов 610
popen 610
pclose 611
Отправка вывода в popen 612
Передача данных большого объема 613
Как реализован вызов popen 615
Вызов pipe 616
Родительский и дочерний процессы 620
Чтение закрытых каналов 622
Каналы, применяемые как стандартные ввод и вывод 623
Именованные каналы: FIFO 627
Доступ к FIFO 628
Более сложная тема: применение каналов FIFO в клиент-серверных приложениях 637
Приложение для работы с базой данных компакт-дисков 641
Цели 643
Реализация 643
Функции интерфейса клиента 647
Интерфейс сервера server.c 654
Канал 659
Резюме, касающееся приложения 665
Резюме 665

Глава 14. Семафоры, совместно используемая память и очереди сообщений

667
Семафоры 667
Описание семафора 669
Теоретический пример 670
Реализация семафоров в Linux 671
Применение семафоров 674
Совместно используемая память 678
shmget 680
shmat 681
shmdt 681
shmctl 681
Очереди сообщений 686
msgget 687
msgsnd 688
msgrcv 689
msgctl 689
Приложение для работы с базой данных компакт-дисков 693
Пересмотр функций сервера 694
Пересмотр функций клиента 696
Команды состояния IPC 698
Отображение состояния семафора 698
Отображение состояния совместно используемой памяти 699
Отображение состояния очереди сообщений 699
Резюме 699

Глава 15. Сокеты

701
Что такое сокет? 702
Соединения на базе сокетов 702
Атрибуты сокета 706
Создание сокета 709
Адреса сокетов 710
Именование сокета 711
Создание очереди сокетов 712
Прием запросов на соединение 712
Запросы соединений 713
Закрытие сокета 714
Обмен данными с помощью сокетов 714
Порядок байтов на компьютере и в сети 718
Сетевая информация 720
Интернет-демон (xinetd/inetd) 725
Параметры сокета 728
Множественные клиенты 729
select 732
Множественные клиенты 736
Дейтаграммы 740
Резюме 743

Глава 16. Программирование в GNOME с помощью GTK+

745
Введение в систему X 745
X-сервер 746
X-клиент 747
X-протокол 747
Xlib 747
Комплекты инструментов 747
Оконные менеджеры 748
Другие способы создания GUI — платформно-независимые оконные API 749
Введение в GTK+ 749
Система типов GLib 751
Система объектов GTK+ 751
Знакомство с GNOME 752
Установка библиотек разработки GNOME/GTK+ 754
События, сигналы и обратные вызовы 757
Виджеты упаковочных контейнеров 761
Виджеты GTK+ 765
GtkWindow 765
GtkEntry 766
GtkSpinButton 770
GtkButton 772
GtkTreeView 776
Виджеты GNOME 781
Меню GNOME 782
Диалоговые окна 788
GtkDialog 788
Модальное диалоговое окно 790
Немодальные диалоговые окна 791
GtkMessageDialog 792
Приложение для работы с базой данных компакт-дисков 794
Резюме 806

Глава 17. Программирование в KDE с помощью Qt

809
Введение в KDE и Qt 810
Установка Qt 811
Сигналы и слоты 814
Виджеты Qt 822
QLineEdit 822
Кнопки Qt 826
QComboBox 831
QListView 836
Диалоговые окна 839
QDialog 840
QMessageBox 843
QInputDialog 844
Применение qmake для упрощения написания make-файлов 845
Создание меню и панелей инструментов с помощью KDE 846
Приложение для работы с базой данных компакт-дисков с использованием KDE/Qt 851
MainWindow 851
AddCdDialog 855
LogonDialog 857
main.cpp 858
Резюме 860

Глава 18. Стандарты Linux

861
Язык программирования C 862
Краткий урок истории 862
Коллекция компиляторов GNU 863
Опции gcc 864
Интерфейсы и Linux Standards Base 866
Стандартные библиотеки LSB 867
Применение стандарта LSB к библиотекам 869
Инициализация системы LSB 870
Стандарт устройства файловой системы 871
Что еще почитать о стандартах? 875
Резюме 875
Предметный указатель 877
XIV Оглавление Оглавление XIII


На главную | Где купить | Авторам | Вакансии | Реклама | Издательство | Каталог | Статьи наших авторов | Контакты
© 2001–2020 Издательство «БХВ-Петербург».
Все права защищены. Частичное или полное копирование текстов, слоганов и фотоизображений без письменного согласия Правообладателя запрещено.