Программирование в Linux. Самоучитель

Николай Иванов

Рассмотрены фундаментальные основы программирования в Linux: инструментарий, низкоуровневый ввод-вывод, многозадачность, файловая система, межпроцессное взаимодействие и обработка ошибок. Книга главным образом ориентирована на практическое применение изложенных концепций. В ней есть все, что нужно начинающим, а углубленное изучение каждой темы делает ее ценной и для опытных программистов. Каждая тема проиллюстрирована большим числом примеров на языках С и С++ и Python, которые читатель сможет использовать в качестве образцов для собственных программ. На FTP-сервере издательства находятся исходные тексты программ.

Во втором издании материал актуализирован с учетом современных тенденций, добавлены 3 новые главы по программированию в Linux на языке Python, устранены замеченные ошибки.

Издательство: БХВ-Петербург, 2-е издание 2012 г.

ISBN 978-5-9775-0744-8

Количество страниц: 400.

Содержание книги «Программирование в Linux. Самоучитель»:

  • 9 Введение
    • 9 Предисловие
    • 9 Условные обозначения
    • 10 Примеры программ
    • 10 Благодарности
    • 10 Обратная связь
  • 13 ЧАСТЬ I. ОСНОВЫ ПРОГРАММИРОВАНИЯ В LINUX
  • 15 Глава 1. Создание программы
    • 15 1.1. Исходный код
    • 17 1.2. Компиляция
    • 18 1.3. Компоновка
    • 19 1.4. Многофайловые проекты
  • 23 Глава 2. Автосборка
    • 23 2.1. Обзор средств автосборки в Linux
    • 25 2.2. Утилита make
    • 25 2.3. Базовый синтаксис Makefile
    • 28 2.4. Константы make
    • 31 2.5. Рекурсивный вызов make
    • 36 2.6. Получение дополнительной информации
  • 37 Глава 3. Окружение
    • 37 3.1. Понятие окружения
    • 39 3.2. Чтение окружения: environ, getenv()
    • 41 3.3. Модификация окружения: setenv(), putenv(), unsetenv()
    • 45 3.4. Очистка окружения
  • 46 Глава 4. Библиотеки
    • 46 4.1. Библиотеки и заголовочные файлы
    • 47 4.2. Подключение библиотек
    • 48 4.3. Создание статических библиотек
    • 52 4.4. Создание совместно используемых библиотек
    • 55 4.5. Взаимодействие библиотек
  • 58 Глава 5. Аргументы и опции программы
    • 58 5.1. Аргументы программы
    • 60 5.2. Использование опций
    • 63 5.3. Использование длинных опций
    • 65 5.4. Получение дополнительной информации
  • 67 ЧАСТЬ II. НИЗКОУРОВНЕВЫЙ ВВОД-ВЫВОД В LINUX
  • 69 Глава 6. Концепция ввода-вывода в Linux
    • 69 6.1. Библиотечные механизмы ввода-вывода языка C
    • 73 6.2. Концепция низкоуровневого ввода-вывода
    • 74 6.3. Консольный ввод-вывод
    • 75 6.4. Ввод-вывод в C++
  • 78 Глава 7. Базовые операции ввода-вывода
    • 78 7.1. Создание файла: creat()
    • 82 7.2. Открытие файла: open()
    • 86 7.3. Закрытие файла: close()
    • 88 7.4. Чтение файла: read()
    • 91 7.5. Запись файла: write()
    • 94 7.6. Произвольный доступ: lseek()
  • 104 Глава 8. Расширенные возможности ввода-вывода в Linux
    • 104 8.1. Взаимодействие с библиотечными механизмами
    • 108 8.2. Векторное чтение: readv()
    • 111 8.3. Векторная запись: writev()
    • 114 8.4. Концепция «черных дыр»
  • 119 ЧАСТЬ III. МНОГОЗАДАЧНОСТЬ
  • 121 Глава 9. Основы многозадачности в Linux
    • 121 9.1. Библиотечный подход: system()
    • 123 9.2. Процессы в Linux
    • 126 9.3. Дерево процессов
    • 127 9.4. Получение информации о процессе
  • 131 Глава 10. Базовая многозадачность
    • 131 10.1. Концепция развилки: fork()
    • 134 10.2. Передача управления: execve()
    • 140 10.3. Семейство exec()
    • 147 10.4. Ожидание процесса: wait()
  • 153 Глава 11. Потоки
    • 153 11.1. Концепция потоков в Linux
    • 155 11.2. Создание потока: pthread_create()
    • 160 11.3. Завершение потока: pthread_exit()
    • 161 11.4. Ожидание потока: pthread_join()
    • 165 11.5. Получение информации о потоке: pthread_self(), pthread_equal()
    • 167 11.6. Отмена потока: pthread_cancel()
    • 169 11.7. Получение дополнительной информации
  • 171 Глава 12. Расширенная многозадачность
    • 171 12.1. Уступчивость процесса: nice()
    • 174 12.2. Семейство wait()
    • 178 12.3. Зомби
  • 181 ЧАСТЬ IV. ФАЙЛОВАЯ СИСТЕМА
  • 183 Глава 13. Обзор файловой системы в Linux
    • 183 13.1. Аксиоматика файловой системы в Linux
    • 184 13.2. Типы файлов
    • 186 13.3. Права доступа
    • 188 13.4. Служебные файловые системы
    • 189 13.5. Устройства
    • 191 13.6. Монтирование файловых систем
  • 192 Глава 14. Чтение информации о файловой системе
    • 192 14.1. Семейство statvfs()
    • 196 14.2. Текущий каталог: getcwd()
    • 199 14.3. Получение дополнительной информации
  • 200 Глава 15. Чтение каталогов
    • 200 15.1. Смена текущего каталога: chdir()
    • 203 15.2. Открытие и закрытие каталога: opendir(), closedir()
    • 204 15.3. Чтение каталога: readdir()
    • 205 15.4. Повторное чтение каталога: rewinddir()
    • 206 15.5. Получение данных о файлах: семейство stat()
    • 213 15.6. Чтение ссылок: readlink()
  • 217 Глава 16. Операции над файлами
    • 217 16.1. Удаление файла: unlink()
    • 224 16.2. Перемещение файла: rename()
    • 226 16.3. Создание ссылок: link()
    • 228 16.4. Создание каталога: mkdir()
    • 232 16.5. Удаление каталога: rmdir()
  • 234 Глава 17. Права доступа
    • 234 17.1. Смена владельца: chown()
    • 234 17.2. Смена прав доступа: семейство chmod()
  • 243 Глава 18. Временные файлы
    • 243 18.1. Концепция использования временных файлов
    • 244 18.2. Создание временного файла: mkstemp()
    • 244 18.3. Закрытие и удаление временного файла
  • 251 ЧАСТЬ V. МЕЖПРОЦЕССНОЕ ВЗАИМОДЕЙСТВИЕ
  • 253 Глава 19. Обзор методов межпроцессного взаимодействия в Linux
    • 253 19.1. Общие сведения о межпроцессном взаимодействии в Linux
    • 254 19.2. Локальные методы межпроцессного взаимодействия
    • 258 19.3. Удаленное межпроцессное взаимодействие
  • 260 Глава 20. Сигналы
    • 260 20.1. Понятие сигнала в Linux
    • 262 20.2. Отправка сигнала: kill()
    • 264 20.3. Обработка сигнала: sigaction()
    • 265 20.4. Сигналы и многозадачность
    • 269 20.5. Получение дополнительной информации
  • 270 Глава 21. Использование общей памяти
    • 270 21.1. Выделение памяти: shmget()
    • 271 21.2. Активизация совместного доступа: shmat()
    • 271 21.3. Отключение совместного доступа: shmdt()
    • 272 21.4. Контроль использования памяти: shmctl()
    • 275 21.5. Использование семафоров
    • 277 21.6. Контроль за семафорами: semctl()
  • 281 Глава 22. Использование общих файлов
    • 281 22.1. Размещение файла в памяти: mmap()
    • 282 22.2. Освобождение памяти: munmap()
    • 283 22.3. Синхронизация: msync()
  • 287 Глава 23. Каналы
    • 287 23.1. Создание канала: pipe()
    • 290 23.2. Перенаправление ввода-вывода: dup2()
    • 294 23.3. Получение дополнительной информации
  • 295 Глава 24. Именованные каналы FIFO
    • 295 24.1. Создание именованного канала
    • 296 24.2. Чтение, запись и закрытие FIFO
  • 299 Глава 25. Сокеты
    • 299 25.1. Типы сокетов
    • 300 25.2. Создание и удаление сокетов
    • 301 25.3. Назначение адреса: bind()
    • 304 25.4. Соединение сокетов: connect()
    • 306 25.5. Прослушивание сокета: listen()
    • 306 25.6. Принятие запроса на подключение: accept()
    • 310 25.7. Прием и передача данных через сокеты
    • 313 25.8. Получение дополнительной информации
  • 315 ЧАСТЬ VI. РАБОТА НАД ОШИБКАМИ И ОТЛАДКА
  • 317 Глава 26. Выявление и обработка ошибок
    • 317 26.1. Типы ошибок
    • 320 26.2. Сообщения об ошибках
    • 321 26.3. Макрос assert()
  • 325 Глава 27. Ошибки системных вызовов
    • 325 27.1. Чтение ошибки: errno
    • 327 27.2. Сообщение об ошибке: strerror(), perror()
  • 330 Глава 28. Использование отладчика gdb
    • 330 28.1. Добавление отладочной информации
    • 331 28.2. Запуск отладчика
    • 334 28.3. Трансляция программы под отладчиком
    • 340 28.4. Точки останова
    • 344 28.5. Получение дополнительной информации
  • 345 ЧАСТЬ VII. ПРОГРАММИРОВАНИЕ В LINUX НА ЯЗЫКЕ PYTHON
  • 347 Глава 29. Язык Python
    • 347 29.1. Несколько слов о языке Python
    • 349 29.2. Инструментарий
    • 350 29.3. Первая программа
    • 352 29.4. Структура программы
  • 356 Глава 30. Типы данных
    • 357 30.1. Переменные
    • 358 30.2. Целые числа
    • 360 30.3. Числа с плавающей точкой
    • 362 30.4. Строки
    • 366 30.5. Списки
  • 369 Глава 31. Программирование на языке Python
    • 369 31.1. Логические операции
    • 371 31.2. Сообщения об ошибках
    • 373 31.3. Ветвления
    • 375 31.4. Циклы
    • 378 31.5. Функции
  • 379 ПРИЛОЖЕНИЯ
    • 381 Приложение 1. Именованные константы
    • 383 Приложение 2. Коды ошибок системных вызовов
    • 386 Приложение 3. Сигналы Linux
    • 388 Приложение 4. Примеры программ
  • 395 Предметный указатель

Инструкция как скачать книгу Николай Иванов: Программирование в Linux. Самоучитель в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.
Программирование в Linux. Самоучитель
Рейтинг книги:
0 голосов
1018

Поиск книг:




При поиске учитываются только слова, длина которых больше 3-х символов.

Статистика: