- •1 Системы реального времени. Основные понятия и определения
- •2 Программирование в ос семейства unix (linux)
- •2.1 Программирование на shell. Использование командных файлов
- •Процедура языка shell
- •Структура команд
- •В таблице 2.1 представлены некоторые средства группировки команд, которые могут быть использованы при создании командных файлов на shell.
- •Перенаправление данных
- •Shell-переменные
- •Условный оператор if
- •Команда test
- •Структурные операторы shell Оператор цикла for
- •Оператор цикла while
- •Оператор цикла until
- •Оператор выбора case
- •Отладка процедур языка shell
- •Практическое задание
- •2.2 Программирование в ос семейства unix с использованием awk»
- •Практическое задание «Программирование с использованием awk»
- •2.3 Программирование в ос с использованием си»
- •Системный вызов ореn
- •Системный вызов сrеаt
- •Системный вызов read
- •Системный вызов write
- •Системный вызов сlose
- •Практическое задание
- •Системный вызов fork
- •Системный вызов wait
- •Системный вызов exit
- •Системные вызовы ехес1, ехес1е, ехесv и ехесvе
- •Системный вызов getpid
- •Системные вызовы getgid, getegid
- •Системные вызовы getuid, geteuid
- •Системный вызов setgid
- •Системный вызов setuid
- •Системный вызов nice
- •Практическое задание «си. Управление процессами»
- •2.3.3 Управление оперативной памятью
- •Указатели на простые переменные
- •Массивы и указатели на массивы
- •Указатели на структуры
- •Динамическое распределение оп
- •Практическое задание
- •3 Компиляция, компоновка и загрузка в Linux
Практическое задание «Программирование с использованием awk»
Создать в домашнем каталоге файл с информацией о сотрудниках. Данные расположить в табличном виде в следующей последовательности:
фамилия;
имя;
название структурного подразделения (СП);
оклад;
год рождения.
В качестве разделителя полей использовать табуляцию.
Например:
Ivanov Ivan Admin 5000 1985
Используя команду awk:
Отобразить на экране всю информацию о сотрудниках из указанного файла в той последовательности, в какой она представлена в файле.
Отобразить на экране всю информацию о сотрудниках из указанного файла в обратной последовательности по сравнению с той, в какой она представлена в файле.
Отобразить только фамилии, имена сотрудников с нумерацией каждой записи. Информацию в строке выводить с использованием пробела.
Отобразить номера структурных подразделений, фамилии сотрудников. Информацию в строке выводить с использованием табуляции. Полученные данные перенаправить в другой файл домашнего каталога, отсортированные по первому столбцу данные отобразить поэкранно.
Отобразить все данные о конкретном сотруднике. Информацию в строке выводить с использованием двойной табуляции.
Отобразить фамилии сотрудников конкретного структурного подразделения.
Отобразить фамилии, названия СП сотрудников одного года рождения.
Отобразить названия СП, в которых есть сотрудники старше 1985 года рождения.
Определить суммарное значение по полю оклад сотрудников данной организации.
Определить суммарное значение по полю оклад сотрудников конкретного СП.
Отобразить оклад, фамилию сотрудника, имеющего максимальный оклад. При выводе данных использовать следующий формат: десятисимвольное поле для отображения фамилии, целочисленное четырехсимвольное поле для отображения оклада.
Задания выполнить:
а) в командной строке;
б) путем написания специальной программы для сканирования данных и формирования отчета.
2.3 Программирование в ос с использованием си»
2.3.1 СИ-функции работы с файлами
Цель: изучение и использование СИ-функций работы с файлами.
Основные понятия. Рассмотрим основные системные вызовы, связанные с проведением операций ввода-вывода, которые наиболее часто используются в операционной системе UNIX. Ввод-вывод в ОС UNIX является крайне простой операцией и налагает на пользователя минимум ограничений.
Системный вызов ореn
Системный вызов ореn (открыть файл) имеет следующий формат:
#include <sys/file.h>
open(name, flags, mode)
char *name;
int flags, mode;
Системный вызов open открывает файл с именем name для чтения и/или записи. Режим открытия файла определяется значением параметра flags. Это значение может быть задано как результат логического сложения следующих признаков (в любой комбинации):
0_RDONLY - открыть только для чтения.
0_WRONLY -открыть только для записи.
0_RDWR - открыть для чтения и записи.
0_NDELAY - не блокировать при открытии. Если операция открытия задерживается по каким-либо причинам, например, при отсутствии готовности линии связи, процесс не приостанавливается. Возвращается код ошибки.
0_АРРЕND - открыть для дозаписи. Обычно, при открытии файла, указатель текущей позиции чтения/записи устанавливается на его начало, но, если задан режим 0_АРРЕND, этот указатель устанавливается на конец файла.
0_СRЕАТ - создать файл, если он не существует.
0_TRUNC - сократить размер файла. В режиме 0_ТRUNC, если указанный файл существует, его размер усекается до нуля.
0_ЕХСL - выдавать ошибку при попытке создания существующего файла. (Этот признак используется в сочетании с признаком 0_СRЕАТ). Режим может применяться для организации простого механизма блокировки.
В случае успешного завершения вызова Ореn, возвращается дескриптор открытого файла, иначе - значение -1 и в переменную еrrnо записывается код ошибки.
При неудачном завершении, переменная еrrnо может принимать следующие значения:
[ЕNOTDIR] - указанное имя, содержит компоненту, которая не является справочником;
[ЕNOENT] - указанный файл не существует и режим 0_СRЕАТ не был определен;
[ЕРЕКМ] - указанное имя содержит символ, отсутствующий в коде АSCП*);
[ЕLООР] - число косвенных ссылок в указанном имени превышает максимально допустимое значение;
[ЕROFS] - указанный файл содержится в файловой системе закрытой по записи и не может быть модифицирован;
[ЕTXTBSY] - попытка открыть на запись файл, содержащий загрузочный модуль выполняющейся реентерабельной программы;
[ЕАССЕS] - режим доступа указанного файла не соответствует
запросу;
[ЕFAULТ] - адрес параметра системного вызова выходит за границы адресного пространства процесса;
[ЕISDIR] Попытка открыть на запись справочник;
[ЕМFILЕ] - переполнена таблица дескрипторов открытых файлов процесса;
[ЕNXIO] - указанный файл является внешним устройством, которое в данный момент не готово к работе.
