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

Тут можно читать бесплатно Основы программирования в Linux - Мэтью Нейл. Жанр: Компьютеры и Интернет / Интернет. Так же Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте FullBooks.club (Фулбукс) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Основы программирования в Linux - Мэтью Нейл

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних просмотр данного контента СТРОГО ЗАПРЕЩЕН! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту pbn.book@yandex.ru для удаления материала


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

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

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

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

 fp = fopen("records.dat", "r+");

 fseek(fp, 43*sizeof(record), SEEK_SET);

 fread(&record, sizeof(record), 1, fp);

 record.integer =143;

 sprintf(record.string, "RECORD-%d", record.integer);

 fseek(fp, 43*sizeof(record), SEEK_SET);

 fwrite(&record, sizeof(record), 1, fp);

 fclose(fp);

3. Теперь отобразите записи в память и обратитесь к 43-й записи для того, чтобы изменить целое на 243 (и обновить строку записи), снова используя отображение в память.

 f = open("records.dat", O_RDWR);

 mapped = (RECORD *)mmap(0, NRECORDS*sizeof(record),

  PROT_READ|PROT_WRITE, MAP_SHARED, f, 0);

 mapped[43].integer = 243;

 sprintf(mapped[43].string, "RECORD-%d", mapped[43].integer);

 msync((void *)mapped, NRECORDS*sizeof(record), MS_ASYNC);

 munmap((void *)mapped, NRECORDS*sizeof(record));

 close(f);

 exit(0);

}

В главе 13 вы встретитесь с еще одним средством совместного использования памяти — разделяемой памятью System V.

Резюме

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

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

Глава 4

Окружение Linux

Когда вы пишете программу для ОС Linux (или UNIX и UNIX-подобных систем), следует принимать во внимание то, что программа будет выполняться в многозадачной среде или многозадачном окружении. Это означает, что много программ будет выполняться одновременно и совместно использовать ресурсы компьютера, такие как память, дисковое пространство и циклы центрального процессора. Может даже существовать несколько экземпляров одной и той же программы, выполняющихся одновременно. Важно, чтобы эти программы не мешали друг другу, знали о своем окружении и могли действовать надлежащим образом, избегая конфликтов, таких как попытка писать в один и тот же файл одновременно с другой программой.

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

□ передача аргументов в программы;

□ переменные окружения;

□ определение текущего времени;

□ временные файлы;

□ получение информации о пользователе и рабочем компьютере;

□ формирование и настройка регистрируемых сообщений;

□ выявление ограничений, накладываемых системой.

Аргументы программы

Когда в ОС Linux или UNIX выполняется программа на языке С, она начинается с функции main. В таких программах функция main объявляется следующим образом:

int main(int argc, char *argv[])

Здесь argc — это счетчик аргументов программы, a argv — массив символьных строк, представляющих сами аргументы.

Вы можете встретить программы на языке С для ОС Linux, просто объявляющие функцию main как

main()

Этот вариант тоже работает, поскольку по умолчанию возвращаемому функцией значению будет назначен тип int, а формальные параметры, которые в функции не применяются, не нуждаются в объявлении. Параметры argc и argv остаются на своем месте, но если вы не объявляете их, то и не можете их использовать.

Каждый раз, когда операционная система запускает новую программу, параметры argc и argv устанавливаются и передаются функции main. Обычно эти параметры предоставляются другой программой, часто командной оболочкой, которая запросила у операционной системы запуск новой программы. Оболочка принимает заданную командную строку, разбивает её на отдельные слова и использует их для заполнения массива argv. Помните о том, что до установки параметров argc и argv командная оболочка Linux обычно выполняет раскрытие метасимволов в аргументах, содержащих имена файлов, в то время как оболочка MS-DOS рассчитывает на то, что программы примут аргументы с метасимволами и выполнят собственную постановку.

Например, если мы дадим командной оболочке следующую команду:

$ <b>myprog left right 'and center'</b>

программа myprog запустит функцию main с приведенными далее параметрами.

argc: 4

argv: {&quot;myprog&quot;, &quot;left&quot;, &quot;right&quot;, &quot;and center&quot;}

Обратите внимание на то, что аргумент-счётчик содержит имя программы и в массив argv оно включено как первый элемент argv[0]. Поскольку в команде оболочки мы применили кавычки, четвертый аргумент представляет собой строку, содержащую пробелы.

Вам все это знакомо, если вы программировали на языке С стандарта ISO/ANSI, Аргументы функции main соответствуют позиционным параметрам в сценариях командной оболочки: $0, $1 и т.д. Язык ISO/ANSI С заявляет, что функция main должна возвращать значение типа int, спецификация X/Open содержит явное объявление, данное ранее.

Аргументы командной строки удобны для передачи данных программам. Например, вы можете применить их в приложениях баз данных для передачи имени базы данных, которую хотите использовать, что позволит вам применить одну и ту же программу для работы с несколькими базами данных. Многие утилиты также используют аргументы командной строки для изменения собственного поведения или установки опций. Вы обычно задаете эти так называемые флаги или переключатели с помощью аргументов командной строки, начинающихся со знака "дефис". Например, программа sort принимает переключатель для изменения обычного порядка сортировки на обратный:

Перейти на страницу:
Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.
Комментарии / Отзывы
    Ничего не найдено.