Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Лабораторная Работа № 5. Работа с файлами в UNIX. Цель работы. Задание. 1. 2. Последовательность выполнения работы. 1. Задание. В отчете отразите возможные опции gcc.




ЛАБОРАТОРНАЯ РАБОТА № 5.

Работа с файлами в UNIX

ЦЕЛЬ РАБОТЫ

Целью работы является освоение навыков компиляции программ на языке С в UNIX и запуск их на счет, а также системные выводы getuid и getid и библиотеки libc.

 

ЗАДАНИЕ

 

1. Задание. В отчете отразите возможные опции gcc.

2. Задание. Написание, компиляция и запуск программы c использованием системных вызовов getuid() и getgid().

3. Напишите, откомпилируйте и запустите программу, которая печатала бы идентификатор пользователя, запустившего программу, и идентификатор его группы.

 

 

1. 2. ПОСЛЕДОВАТЕЛЬНОСТЬ ВЫПОЛНЕНИЯ РАБОТЫ

 

1. Задание. В отчете отразите возможные опции gcc.

 

Обычная компиляция *. c файла

 

Вывод информации о файле исходного кода и исполняемого

 

Использование опции –o в команде gcc и, соответсвенно, переименование исполняемого файла в свой (lab5v2)

 

Воспользовавшись опцией –E дальнейшее действия gcc можно прервать и посмотреть содержимое файла, обработанного препроцессором.

 

 

Следующий этап операция ассемблирования - трансляция кода на языке ассемблера в машинный код. Результат операции - объектный файл.

Опция gcc -c, останавливает процесс по завершении этапа ассемблирования:

 

Опция -Wall - выводит предупреждения, вызванные потенциальными ошибками в коде, не препятствующими компиляции программы, но способными привести, по мнению компилятора, к тем или иным проблемам при её исполнении. Важная и полезная опция, разработчики gcc рекомендуют пользоваться ей всегда.

 

Опция -Werror - превращает все предупреждения в ошибки. В случае появления предупреждения прерывает процесс компиляции. Используется совместно с опцией -Wall.

 

Опции -O1, -O2, -O3 - задают уровень оптимизации кода генерируемого компилятором. С увеличением номера, степень оптимизации возрастает.

Компиляция с уровнем оптимизации по умолчанию:

 

Компиляция с максимальным уровнем оптимизации:

 

2. Задание. Написание, компиляция и запуск программы c использованием системных вызовов getuid() и getgid().

3. Напишите, откомпилируйте и запустите программу, которая печатала бы идентификатор пользователя, запустившего программу, и идентификатор его группы.

 

 

 

 

Вывод:

 

Научились использовать опции для компиляции программ на языке С в UNIX и их запуск. Также изучили новые системные вызовы getuid() и getgid(), с помощью которых можно узнать номер пользователя и номер группы в системе.

 

 

Министерство образования и науки Российской Федерации

Федеральное государственное автономное образовательное учреждение

высшего образования

«Южно-Уральский государственный университет»

(национальный исследовательский университет)

Институт естественных и точных наук

Факультет математики, механики и компьютерных технологий

Кафедра прикладной математики и программирования

 

   

 

 

ОТЧЕТ К ЛАБОРАТОРНОЙ РАБОТЕ №6

по дисциплине операционные системы

 

    Руководитель работы, __________/Е. Ю. Алексеева «____»_____________2019 г.
    Автор работы Студент группы ЕТ-313 _____________/ К. С. Шведов «____»_____________2019 г.
   

 

Челябинск 2019

ЛАБОРАТОРНАЯ РАБОТА № 6.

Работа с файлами в UNIX

ЦЕЛЬ РАБОТЫ

План занятия

Теоретическая часть работы

1.  Понятие процесса в UNIX, его контекст.

2.  Идентификация процесса.

3.  Состояния процесса. Краткая диаграмма состояний.

4.  Иерархия процессов.

5.  Системные вызовы getpid(), getppid().

6.  Создание процесса в UNIX. Системный вызов fork().

7.  Завершение процесса. Функция exit().

8.  Параметры функции main() в языке С. Переменные среды и аргументы командной

 строки.

9.  Изменение пользовательского контекста процесса. Семейство функций для

 системного вызова exec().

 

Практические работы

1.  Написание, компиляция и запуск программы с системными вызовами getpid() и getppid().

2.  Прогон программы с использованием вызова fork(), где порожденный процесс

 делает то же самое, что и родитель.

3.  Написание, компиляция и запуск программы с использованием вызова fork() с

 разным поведением процессов ребенка и родителя.

4.  Написание, компиляция и запуск программы с распечаткой значений переменных

 среды и аргументов командной строки.

5.  Прогон программы с использованием системного вызова exec().

6.  Написание, компиляция и запуск программы для изменения пользовательского

 контекста в порожденном процессе.

 

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...