
- •Министерство образования и науки Украины
- •Практическое занятие №1
- •1.1. Сокращенная запись двоичных чисел в восьмеричной и шестнадцатеричной системах счисления
- •1.2. Преобразование восьмеричных и шестнадцатеричных чисел в двоичные
- •1.3. Преобразование двоичных, восьмеричных и шестнадцатеричных чисел в десятичные
- •1.4. Преобразование десятичных чисел в двоичные, восьмеричные и шестнадцатеричные
- •2. Упражнения
- •3. Содержание отчёта
- •Практическое занятие №2
- •1.1. Вход в систему
- •1.2. Редактирование командной строки
- •1.3. Память командных строк
- •1.4. Переключение виртуальных консолей
- •1.5. Изменение консольных шрифтов
- •1.6. Основные команды
- •Выполнение некоторых команд
- •2. Команда просмотра содержимого каталогов -ls (LiSt) – выдает на экран перечень файлов и каталогов (по умолчанию из текущего каталога).
- •Жесткая ссылка обозначает ся так же, как файл, на который она ссылается, счетчик ссылок при этом будет иметь значение больше 1.
- •3. Команда создание новых каталогов - mkdir.
- •5. Команда копирование файлов -cp (CoPy).
- •6. Команда перемещение файлов - mv (MoVe).
- •7. Команда удаление файлов - rm (ReMove).
- •8. Команды просмотра содержимого файлов more и cat.
- •Подстановочные символы
- •1.7. Выход из системы
- •2. Упражнения
- •Используя справочную информацию из п.1.6 Основные команды, изучите работу рассмотренных команд с различными параметрами и опциями:
- •1.2. Перенаправление ввода и вывода
- •1.3. Перенаправление с добавлением
- •1.4. Использование конвейера
- •2. Упражнения
- •3. Содержание отчёта
- •Справочная информация
- •Практическое занятие №4 Псевдонимы команд в ос qnx Цель – создание псевдонимов команд для облегчения работы в среде ос qnx
- •1. Краткие теоретические сведения
- •1.1. Управление связями файлов
- •1.2. Жесткие связи
- •1.3. Символические связи
- •1.4. Права доступа к файлам
- •1.5. Зависимости
- •1.6. Изменение прав доступа
- •2. Упражнения
- •3. Содержание отчёта
- •1.2. Сравнение файлов (команда diff)
- •1.3. Подсчет числа слов, строк и байт в файле (команда wc)
- •1.4. Потоковый редактор sed
- •2. Упражнения
- •/Usr/bin/grep
- •/Usr/xpg4/bin/grep
- •/Usr/xpg4/bin/grep
- •Операнды
- •/Usr/bin/grep
- •/Usr/xpg4/bin/grep
- •Использование
- •Работа с большими файлами
- •/Usr/bin/who
- •/Usr/xpg4/bin/who
- •Операнды
- •1.1. Ввод текста
- •1.2. Редактирование текста
- •1.3. Сохранение файлов и выход из VI
- •1.4. Редактирование еще одного файла
- •1.5. Включение других файлов
- •1.6. Выполнение команд Shell
- •2. Упражнения
- •3. Содержание отчёта
- •Практическое занятие №7 Работа с текстовыми файлами Цель – знакомство с командами, работающими с текстовыми файлами (awk-интерпретатор скриптовый)
- •1. Краткие теоретические сведения
- •1.1. Язык awk
- •1.2. Регулярные выражения
- •Метасимволы, используемые в регулярных выражениях
- •1.3. Действия
- •1.4. Awk-переменные и выражения
- •1.5. Использование операций
- •1.6. Использование массивов
- •1.7. Селекторы
- •1.8. Использование операторов
- •1.9. Ввод и вывод данных
- •1.10. Встроенные функции
- •2. Упражнения
- •Структура файла query1
- •Структура файла query2
- •3. Содержание отчёта
- •1.2. Граматика языка shell
- •2. Упражнения
- •3. Содержание отчёта
- •Выполнить:
- •2. Упражнения
- •Примечание:
- •3. Содержание отчёта
- •1.1. Компоновка объектных модулей
- •1.2. Отладка
- •2. Упражнения
- •Задание №1
- •Задание №2
- •Задание №3
- •Задание №4
- •Задание №5
- •Задание №6
- •Задание №13
- •Задание №14
- •Задание №15
- •Задание №16
- •Задание №17
- •Практическое занятие №11
- •2. Упражнения
- •3. Содержание отчёта
- •1.2. Создание каталога
- •1.3. Биты режима для прав доступа
- •1.4. Удаление каталога
- •1.5. Создание жесткой связи
- •1.6. Создание символической связи
- •1.7. Чтение символической связи
- •1.8. Переименование файла
- •1.9. Удаление файла
- •1.10. Обработка ошибок
- •2. Упражнения
- •3. Содержание отчёта
- •1.2. Проверка возможностей управления работой и процессами в shell
- •2. Упражнения
- •3. Содержание отчёта
- •1.3. Ошибки, связанные с именами файлов
- •1.4. Доступ к файлу
- •2. Упражнения
- •3. Содержание отчёта
- •Практическое занятие №15 Организация процессов вQnx
- •1. Методические указания по выполнению практической работы
- •1.1. Файл main.O
- •1.2. Файл input.C
- •1.3. Файл output.C
- •1.4. Файл process.C
- •1.5. Используемые функции
- •1.6. Получение информации о процессах
- •2. Упражнения
- •1.2. Клиент
- •1.3. Определение идентификаторов узла, процесса и канала (nd/pid/chid) нужного сервера
- •1.4. Применение обмена сообщениями
- •2. Упражнения
- •3. Содержание отчёта
- •Практическое занятие №17 Организация потоков в qnx
- •1. Краткие теоретические сведения
- •1.1. Запуск потока
- •1.2. Администрирование атрибутов потока
- •Текст программы
- •Результаты
- •1.2. Текст программы
- •1.3. Последовательность действий
- •1.4. Результаты
- •2. Упражнения
- •3. Содержание отчёта
2. Упражнения
УПРАЖНЕНИЕ 2.1.
1) Используя команду use qcc, получите список ключей, запишите в отчет значение ключей -c, -o, -l, -V.
Используя команду qnx -V определите версию компилятора используемого по умолчанию (вывод списка на экран можно досрочно остановить, нажав комбинацию клавиш Ctrl/Pause Break)
УПРАЖНЕНИЕ 2.2.
1) Наберите в редакторе программу:
main()
{
printf(«Hello, world!\n»);
}
2) Сохраните файл с именем hello.c
3) Выполните компиляцию, используя команду qcc hello.c -o hello.
4) Запустите программу из текущего директория (текущий директорий обозначается точкой (.))
./hello
УПРАЖНЕНИЕ 2.3.
1) В текстовом редакторе создайте:
Файл defs.h с содержанием:
extern void aaa();
extern void bbb();
extern void ccc();
Файл main.c с содержанием:
#include «defs.h»
int main()
{
printf(“I am main\n”);
aaa();
return 0;
}
Файл aaa.c с содержанием
#include “defs.h”
void aaa()
{
printf(“I am aaa\n”);
bbb();
}
Файл bbb.c с содержанием
#include “defs.h”
void bbb()
{
printf(“I am bbb\n”);
ccc();
}
Файл ссс.с с содержанием
#include «defs.h» void ccc()
{
printf(“I am ccc\n”);
}
2) Для того чтобы из этих файлов построить программу с именем program выполните команды:
qcc -c main.c
qcc -c aaa.c
qcc -c bbb.c
qcc -c ccc.c
qcc -o program main.o aaa.o bbb.o ccc.o
Эта последовательность команд называют сборкой проекта.
3) Запустите программу, используя команду
./program
УПРАЖНЕНИЕ 2.4.
Создайте в редакторе makefile следующего содержания:
program: main.o aaa.o bbb.o ccc.o
qcc -o program
main.o: main.c defs.h
qcc -c aaa.c
aaa.o: aaa.c defs.h
qcc -c aaa.c
bbb.o: bbb.c defs.h
qcc -c bbb.c
ccc.o: ccc.c defs.h
qcc -c ccc.c
2) Выполните сборку проекта, используя команду make (предварительно удалите старую версию program).
3) Запустите программу, используя команду
./program
4) Вновь запустите утилиту make, результат прокомментируйте в отчете.
Файл makefile можно упростить, учитывая, что утилита make достаточно интеллектуальна и способна самостоятельно выбрать файлы зависимостей (с расширением *.с) если в цели указаны объектные файлы (с расширением *.о), а также самостоятельно построить и выполнить команды соответствующие цели.
5) Приведите makefile к виду:
program: main.o aaa.o bbb.o ccc.o
qcc -o program main.o aaa.o bbb.o ccc.o
main.o aaa.o bbb.o ccc.o:
6) Убедитесь, что сборка проекта с новым вариантом выполняется нормально.
7) В утилите make можно использовать макросы, которые имеют следующий синтаксис:
ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ
ЗНАЧЕНИЕ может быть произвольной последовательностью символов включая пробелы и обращения к ранее определенных переменных. После объявления переменной к ней можно обратиться в формате $(ПЕРЕМЕННАЯ).
Введем переменную OBJS=main.o aaa.o bbb.o ccc.o
в результате makefile приводится к виду:
OBJS=main.o aaa.o bbb.o ccc.o
program: $(OBJS)
qcc -o program $(OBJS)
$(OBJS):
Проверьте экспериментально, что последнюю строчку в makefile можно удалить без ущерба исполнения.
Некоторые переменные уже предопределены для утилиты make. К ним относятся, например:
CC=cc - компилятор С (сс - это ссылка на qcc);
CXX=q++ - компилятор С++;
CPP=cpp –препроцессор;
LEX=lex - лексический анализатор С-программ;
RM=rm -f - команда удаления файлов.
В makefile могут присутствовать комментарии. Комментарием является любая строка, начинающаяся с символа #
8) Приведите makefile к виду:
# This is makefile
OBJS=main.o aaa.o bbb.o ccc.o
program: $(OBJS)
qcc -o program $(OBJS)
$(RM) $(OBJS)
9) Дважды запустите утилиту make. Прокомментируйте в отчете действие последней строки в makefile.