Нейл Мэтью - Основы программирования в Linux

Тут можно читать онлайн Нейл Мэтью - Основы программирования в Linux - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-osnet, издательство «БХВ-Петербург», год 2009. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Основы программирования в Linux
  • Автор:
  • Жанр:
  • Издательство:
    «БХВ-Петербург»
  • Год:
    2009
  • Город:
    Санкт-Петербург
  • ISBN:
    978-5-9775-0289-4
  • Рейтинг:
    4/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Нейл Мэтью - Основы программирования в Linux краткое содержание

Основы программирования в Linux - описание и краткое содержание, автор Нейл Мэтью, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым.

Для начинающих Linux-программистов

Основы программирования в Linux - читать онлайн бесплатно полную версию (весь текст целиком)

Основы программирования в Linux - читать книгу онлайн бесплатно, автор Нейл Мэтью
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Все приложение занимает восемь страниц, поэтому мы разделили его на секции и отдельные функции внутри секций. Исходный код программы curses_app.c можно получить на Web-сайте издательства Wrox (http://www.wrox.com/WileyCDA/).Как и все программы из этой книги, оно подчиняется требованиям Общедоступной лицензии проекта GNU.

Примечание

Мы написали эту версию приложения для работы с базой данных компакт-дисков, используя информацию из предыдущих глав. Данное приложение — потомок оригинального сценария командной оболочки, приведенного в главе 2. Оно не перепроектировалось для написания на языке С, поэтому вы увидите в этой версии многие подходы, заимствованные из сценария. Учтите, что в этой реализации есть существенные ограничения, которые мы устраним в последующих модификациях.

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

Начало нового приложения для работы с коллекцией компакт-дисков

Первая секция программного кода просто связана с объявлениями переменных и функций, которые вы будете применять позже, и инициализацией некоторых структур данных.

1. Включите в программу все приведенные заголовочные файлы и несколько глобальных переменных:

#include

#include

#include

#include

#include

#define MAX_STRING 80 /* Самый длинный допустимый ответ */

#define MAX_ENTRY 1024 /* Самый длинный допустимый элемент БД */

#define MESSAGE_LINE 6 /* В этой строке разные сообщения */

#define ERROR LINE 22 /* Строка для вывода ошибок */

#define Q_LINE 20 /* Строка для вопросов */

#define PROMPT_LINE 18 /* Строка для вывода приглашения */

2. Теперь вам нужны глобальные переменные. Переменная current_cdisприменяется для хранения названия текущего компакт-диска, с которым вы работаете в данный момент. Она инициализируется так, что первый символ равен NULL, чтобы показать, что компакт-диск не выбран. Символ завершения \0, строго говоря, не обязателен, но он гарантирует инициализацию переменной, что само по себе хорошая вещь. Переменная current_catприменяется для записи номера текущего компакт-диска в каталоге:

static char current_cd[MAX_STRING] = "\0";

static char current_cat[MAX_STRING];

3. Теперь объявите имена файлов. Для простоты в этой версии имена файлов фиксированные, как и имя временного файла.

Это может вызвать проблемы, если программа выполняется двумя пользователями в одном и том же каталоге. Лучше получать имена файлов базы данных как аргументы программы или из переменных окружения. Нам также потребуется улучшенный метод генерации уникального имени временного файла, для чего мы могли бы использовать функцию tmpnamиз стандарта POSIX. Мы обратимся к решению многих из этих проблем в главе 8 , когда применим СУРБД MySQL для хранения данных.

const char *title_file = "title.cdb";

const char *tracks_file = "tracks.cdb";

const char *temp_file = "cdb.tmp";

4. И наконец, прототипы функций:

void clear_all_screen(void);

void get_return(void);

int get_confirm(void);

int getchoice(char *greet, char *choices[]);

void draw_menu(char *options[], int highlight,

int start_row, int start_col);

void insert_title(char *cdtitle);

void get_string(char *string);

void add_record(void);

void count_cds(void);

void find_cd(void);

void list_tracks(void);

void remove_tracks(void);

void remove_cd(void);

void update_cd(void);

5. Прежде чем рассматривать их реализацию, введем некоторые структуры (на самом деле массив пунктов меню) для хранения меню. Когда выбирается пункт меню, возвращается первый символ выбранного пункта. Например, если это пункт меню add newCD (добавить новый CD), при его выборе будет возвращен символ а. Когда компакт-диск выбран, будет отображаться расширенное меню.

char *main_menu[] = {

"add new CD",

"find CD",

"count CDs and tracks in the catalog",

"quit",

0,

};

char *extended_menu[] = {

"add new CD",

"find CD",

"count CDs and tracks in the catalog",

"list tracks on current CD";

"remove current CD",

"update track information",

"quit",

0,

};

На этом инициализация закончена. Теперь можно переходить к функциям программы, но сначала необходимо составить общее представление о взаимосвязях всех 16 функций. Функции разделены на три программных секции:

□ отображение меню;

□ добавление компакт-дисков в базу данных;

□ извлечение и отображение данных компакт-диска.

Визуальное представление дано на рис. 6.9.

Рис 69 Взгляд на функцию main Функция mainпозволяет выбирать пункты меню - фото 19

Рис. 6.9

Взгляд на функцию main

Функция mainпозволяет выбирать пункты меню, пока не выбран вариант выхода из меню ( quit). Далее приведен соответствующий код.

int main() {

int choice;

initscr();

do {

choice = getchoice("Options:", current_cd[0] ? extended_menu : main_menu);

switch (choice) {

case 'q':

break;

case 'a':

add_record();

break;

case 'c':

count_cds();

break;

case 'f':

find_cd();

break;

case 'l':

list_tracks();

break;

case 'r':

remove_cd();

break;

case 'u':

update_cd();

break;

}

} while (choice != 'q');

endwin();

exit(EXIT_SUCCESS);

}

Теперь давайте подробно рассмотрим функции, связанные с тремя секциями программы.

Формирование меню

В этой секции рассматриваются три функции, относящиеся к пользовательскому интерфейсу программы.

1. Функция getchoice, вызываемая из функции main, — это основная функция данной секции. В функцию getchoiceпередается приглашение greetи указатель choicesна базовое или расширенное меню (в зависимости от того, выбран ли компакт-диск). Вы также увидите, как main_menuили extended_menuпередаются как параметры в описанную ранее функцию main.

int get_choice(char *greet, char* choises[]) {

static int selected_row = 0;

int max_row = 0;

int start_screenrow = MESSAGE_LINE, start_screencol = 10;

char **option;

int selected;

int key = 0;

option = choices;

while (*option) {

max_row++;

option++;

}

if (selected_row >= max_row)

selected_row = 0;

clear_all_screen();

mvprintw(start_screenrow - 2, start_screencol, greet);

keypad(stdscr, TRUE);

cbreak();

noecho();

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

Интервал:

Закладка:

Сделать


Нейл Мэтью читать все книги автора по порядку

Нейл Мэтью - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Основы программирования в Linux отзывы


Отзывы читателей о книге Основы программирования в Linux, автор: Нейл Мэтью. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x