Основы программирования в Linux - Мэтью Нейл Страница 172
- Категория: Компьютеры и Интернет / Интернет
- Автор: Мэтью Нейл
- Страниц: 324
- Добавлено: 2020-09-22 15:22:12
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних просмотр данного контента СТРОГО ЗАПРЕЩЕН! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту pbn.book@yandex.ru для удаления материала
Основы программирования в Linux - Мэтью Нейл краткое содержание
Прочтите описание перед тем, как прочитать онлайн книгу «Основы программирования в Linux - Мэтью Нейл» бесплатно полную версию:В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стандартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов
Основы программирования в Linux - Мэтью Нейл читать онлайн бесплатно
done
$
Отредактируйте файл в соответствии с приведенным далее кодом:
#include <stdlib.h>
#include <stdio.h>
/*
Это важный файл для управления данным проектом.
В нем реализована каноническая программа "Hello World".
Filename: $RCSfile$
*/
static char *RCSinfo = "$Id$";
int main() {
printf ("Hello World\n");
printf("This is an extra line added later\n");
printf("This file is under RCS control. Its ID is\n%s\n", RCSinfo);
exit(EXIT_SUCCESS);
}
Теперь сохраните эту версию и посмотрите, как RCS управляет специальными строками:
$ <b>ci important.с</b>
important.с,v <-- important.c
new revision: 1.3;
previous revision: 1.2
enter log message, terminated with single '.' or end of file:
>> <b>Added $RCSfile$ and $Id$ strings</b>
>> <b>.</b>
done
$
Если заглянете в каталог, то найдете только RCS-файл.
$ <b>ls -l</b>
-r--r--r-- 1 neil users 907 2007-07-09 08:07 important.с,v
$
Если вы извлечете текущую версию исходного файла (с помощью команды со) и просмотрите его, то увидите, что макросы раскрыты:
#include <stdlib.h>
#include <stdio.h>
/*
Это важный файл для управления данным проектом.
В нем реализована каноническая программа "Hello World".
Filename: $RCSfile: important.с,v $
<i>*/</i>
static char *RCSinfo = "$Id: important.c,v 1.3 2007/07/09. 07:07:08 neil Exp $";
int main() {
printf("Hello World\n");
printf("This is an extra line added later\n");
printf("This file is under RCS control. Its ID is\n%s\n", RCSinfo);
exit(EXIT_SUCCESS);
}
А теперь выполните упражнение 9.6.
Упражнение 9.6. GNU-версия make с RCSУ команды make версии GNU есть несколько встроенных правил для управления RCS-файлами. В этом примере вы увидите, как работать с отсутствующим исходным файлом.
$ <b>rm -f important.с</b>
$ <b>make important</b>
со important.с,v important.c
important.с,v --> important.c
revision 1.3
done
сс -c important.c -o important.о сс important.о -о important
rm important.о important.с
$
Как это работает
У команды make есть стандартное правило для создания файла без расширения с помощью компиляции файла с тем же именем и расширением с. Второе стандартное правило разрешает make создать файл important.c из файла important.c,v, используя RCS. Поскольку нет файла с именем important.c, команда make создала файл с расширением с, получив последнюю версию файла с помощью команды со. После компиляции она навела порядок, удалив файл important.c.
Команда identКоманду ident можно применять для поиска версии файла, которая содержит строку $Id$. Поскольку вы сохранили строку в переменной, она появляется и в результирующем исполняемом файле. Может оказаться так, что, если вы включили специальные строки в исходный код, но никогда не обращаетесь к ним, компилятор из соображений оптимизации удалит их. Эту проблему можно обойти, добавив в исходный код несколько фиктивных обращений к ним, хотя по мере улучшения компиляторов делать это становится все труднее!
Далее показан простой пример того, как можно использовать команду ident для двойной проверки RCS-версии исходного файла, применяемого для формирования исполняемого файла (упражнение 9.7).
Упражнение 9.7. Команда ident$ <b>./important</b>
Hello World
This is an extra line added later
This file is under RCS control. Its ID is
$Id: important.c,v 1.3 2007/07/09 07:07:08 neil Exp $
$ <b>ident important</b>
important:
$Id: important.c,v 1.3 2007/07/09 07 :07 :08 neil Exp $
$
Как это работает
Выполняя программу, вы показываете строку, включенную в исполняемый файл. Далее вы демонстрируете, как команда ident может извлечь из исполняемого файла строки вида $Id$.
Этот метод применения RCS и строк вида $Id$, включаемых в исполняемые файлы, может быть очень мощным средством определения версии файла, содержащей ошибку, о которой сообщил пользователь. RCS-файлы (или SCCS) можно применять как часть средства отслеживания в проекте проблем, о которых сообщается, и способов их устранения. Если вы продаете программное обеспечение или даже отдаете его бесплатно, очень важно знать, что изменилось между двумя выпущенными версиями.
Жалоба
Напишите нам, и мы в срочном порядке примем меры.