Министерство образования Республики Беларусь
Учреждение образования
Белорусский государственный университет
информатики и радиоэлектроники
Кафедра программного обеспечения
информационных технологий
Алексеев Игорь Геннадиевич,
Бранцевич Петр Юльянович
“Теория вычислительных процессов и структур”
учебно-методическое пособие для студентов специальности
«Программное обеспечение информационных технологий»
дневной формы обучения
Минск 2004
УДК 004.04 (075.8)
ББК 32.973 я 73
А47
Рецензент:
доцент Института информационных технологий
канд. техн. наук В.Н. Мухаметов
А47 Алексеев И.Г. Учебно-методическое пособие Теория вычислительных процессов и систем: для студ. спец. «Программное обеспечение информационных технологий»/ И.Г Алексеев, П.Ю. Бранцевич – Мн.: БГУИР, 2004. –54 с.
ISBN 985-444-№
В пособии рассмотрены основные команды операционной системы UNIX, предназначенные для работы с файлами и каталогами, а также для создания процессов и организации взаимодействия между ними. Даны структуры лабораторных работ по курсу «ТВПиС»
ISBN 985-444-387-6 © Алексеев И.Г, Бранцевич П.Ю 2004
© БГУИР, 2004
СОДЕРЖАНИЕ
1. ОСНОВНЫЕ Команды ОС UNIX........................................................... 4
2. Лабораторные работы....................................................................... 6
Лабораторная работа № 1 Работа с файлами и каталогами ОС UNIX....... 6
Лабораторная работа № 2 Создание процессов ........................................ 17
Лабораторная работа № 3 Взаимодействие процессов.............................. 24
Лабораторная работа № 4 Сигналы............................................................ 31
Лабораторная работа № 5 Использование каналов.................................... 40
Лабораторная работа № 6 Работа с несколькими каналами...................... 46
Лабораторная работа № 7 Работа с использованием неименованных
каналов........................................................................................................ 52
Литература................................................................................................. 53
1. Основные команды ос unix
Вход в систему и выход
В ответ на приглашение системы ввести Logon вводим: sxtxx, например s5t03, где 5 – номер Вашей группы, а 03 – Ваш порядковый номер в группе. Затем после входа в систему устанавливаем с помощью команды passwd свой пароль длиной не менее 6 символов. Не забывайте свой логин и пароль! Пароль нельзя восстановить!
Пароль в зашифрованном виде находится в каталоге ./etс в файле shadow и для его сброса необходимо удалить набор символов после имени пользователя между двоеточиями. Например, пользователь stud1, запись в файле shadow:
stud1:gdwiefu@#@#$%66reHHrrnCvcn:12060:………
после удаления пароля запись должна быть следующая:
stud1::12060:………
Выход из системы можно осуществить по команде exit
Рабочие каталоги и файлы
Ваш рабочий каталог: /home/sxtxx, где x и xx – номер группы и порядковый номер студента в группе.
Включаемые файлы типа: stdio.h, stdlib.h и т.п. находятся в каталоге: /usr/include/
Работа с каталогами и файлами
Для вывода содержимого текущего каталога можно использовать команду: dir или ls, для изменения текущего каталога – команду: cd.
Для вывода полного имени текущего каталога можно использовать команду: pwd, для создания или удаления каталога – команды: mkdir и rmdir.
Для вывода на терминал содержимого файла можно использовать команду: cat имя_файла, например: cat prog.txt.
Для вызова файл-менеджера типа Norton`а набираем: mc (вызов оболочки файл-менеджера Midnight Commander) и далее работаем с его меню.
Для вызова текстового редактора набираем: joe или joe имя_создаваемого_или_редактируемого_файла. В самом редакторе практически все команды начинаются с последовательности ctrl-k, и нажатия нужного символа. Например, ctrl-k h выведет справку по основным командам редактора, а ctrl-k x завершит работу редактора с сохранением редактируемого файла.
Работа с программами и процессами
Запуск программы на выполнение:
./имя_программы например: ./prog1.exe
Для компиляции программ на С/С++ вызываем компилятор:
cc имя_входного_файла – о имя_выходного_файла или:
gcc имя_входного_файла – о имя_выходного_файла ,
где имя_входного_файла обязательно должно быть с расширением *.с или *.cpp, а имя_выходного_файла может быть любым (желательно совпадать с именем входного файла, кроме расширения).
Например: cc myprog1.c –o myprog1
или
gcc myprog1.c –o myprog1
Для вывода списка запущенных процессов можно использовать команду:
ps, например: ps –x выведет список всех запущенных процессов.
Для снятия задачи (процесса) можно использовать команду: kill pid_процесса, предварительно узнав его pid командой ps.
В каталоге ./proc находятся сведения обо всех запущенных процессах в системе, их состоянии, распределении памяти и т.д.
Типовой вид каталога:
./proc/1081/……..,
./proc/1085/………, где 1081 и 1082 соответственно pid запущенных процессов в системе.
Справку по командам системы или по языку С можно получить по команде:
man имя_команды, например: man ls
2. Лабораторные работы
Лабораторная работа №1
Работа с файлами и каталогами ОС UNIX
Цель работы – изучить основные команды ОС UNIX для работы с файлами и каталогами.
Теоретическая часть
Для выполнения операций записи и чтения данных в существующем файле его следует открыть при помощи системного вызова open. Ниже приведено описание этого вызова:
# include <sys / types.h>
# include <sys / stat.h>
# include <fcnt1.h>
int open (const char *pathname, int flags, [mode_t mode]);
Первый аргумент, pathname, является указателем на строку маршрутного имени открываемого файла. Значение pathname может быть абсолютным путём, например: /usr / keith / junk. Данный путь задаёт положение файла по отношению к корневому каталогу. Аргумент pathname может также быть относительным путём, задающим маршрут от текущего каталога к файлу, например: keith / junk или просто junk. В последнем случае программа откроет файл junk в текущем каталоге. В общем случае, если один из аргументов системного вызова или библиотечной процедуры – имя файла, то в качестве него можно задать любое допустимое маршрутное имя файла UNIX.
Второй аргумент системного вызова open - flags - имеет целочисленный тип и определяет метод доступа. Параметр flags принимает одно из значений, заданных постоянными в заголовочном файле <fcnt1.h> при помощи директивы препроцессора #define ( fcnt1 является сокращением от file control - «управление файлом»). В файле <fcnt1.h> определены три постоянных:
O_RDONLY – открыть файл только для чтения,
O_WRONLY – открыть файл только для записи,
O_RDWR – открыть файл для чтения и записи.
В случае успешного завершения вызова open и открытия файла возвращаемое вызовом open значение будет содержать неотрицательное целое число – дескриптор файла. В случае ошибки вызов open возвращает вместо дескриптора файла значение –1. Это может произойти, например, если файл не существует.
Третий параметр mode, является необязательным, он используется только вместе с флагом O_CREAT.
Следующий фрагмент программы открывает файл junk для чтения и записи и проверяет, не возникает ли при этом ошибка. Этот последний момент особенно важен: имеет смысл устанавливать проверку ошибок во все программы, которые используют системные вызовы, поскольку каким бы простым ни было приложение, иногда может произойти сбой. В приведенном ниже примере используются библиотечные процедуры printf для вывода сообщения и exit – для завершения процесса:
# include <stdlib.h> /* Для вызова exit */
char workfile=”junk”; / Задать имя рабочего файла */
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9