Робота з компілятором G++ в ОС GNU/LINUX

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
О
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2019
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Операційні системи

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет “Львівська політехніка” Кафедра БІТ / З В І Т до лабораторної роботи №6 з дисципліни “Операційні системи” на тему “Робота з компілятором G++ в ОС GNU/LINUX ” Мета роботи – оволодіти практичними навиками роботи з компілятором G++ та системними викликами в операційній системі GNU/Linux; ознайомитись із механізмом виконання системних викликів, процесом компіляції та побудови виконавчих файлів в цій ОС. Порядок виконання роботи 1. Створити три файли з кодом на мові С++. Два файли з вихідним кодом на мові С++, перший повинен містити процедури, що реалізують задане варіантом завдання, а другий функцію main (). Третій файл – заголовний (.h). Створити Make-файл, що міститиме правила для створення виконавчого файлу, а також правила clean, install і uninstall. Результати виконання Імплементація header файлу “task.h” - “task.cpp” #include<stdio.h> #include <sys/stat.h> #include <sys/types.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <iostream> #include <unistd.h> #include <stdexcept> #include "task.h" #define BUF_SIZE 4096 #define OUTPUT_M0DE 0700 FilePerms::FilePerms(char* name) { if(!name) { throw std::invalid_argument( "File doesn't exists!" ); return; } this->name=name; } char * FilePerms::Task(){ struct stat st; char *modeval = (char*)malloc(sizeof(char) * 9 + 1); if(stat(name, &st) == 0){ mode_t perm = st.st_mode; modeval[0] = (perm & S_IRUSR) ? 'r' : '-'; modeval[1] = (perm & S_IWUSR) ? 'w' : '-'; modeval[2] = (perm & S_IXUSR) ? 'x' : '-'; modeval[3] = (perm & S_IRGRP) ? 'r' : '-'; modeval[4] = (perm & S_IWGRP) ? 'w' : '-'; modeval[5] = (perm & S_IXGRP) ? 'x' : '-'; modeval[6] = (perm & S_IROTH) ? 'r' : '-'; modeval[7] = (perm & S_IWOTH) ? 'w' : '-'; modeval[8] = (perm & S_IXOTH) ? 'x' : '-'; modeval[9] = '\0'; return modeval; } else{ return strerror(errno); } } char ans; std::cout<<"\nWant to close permissions? y/n\n"; std::cin>>ans; if(tolower(ans)=='y') { chmod(name, S_IRWXU); std::cout<<"\nDone\n"; char* tmpshow = Task(); std::cout<<"\nNew file permissions: "<<tmpshow<<std::endl; } else return; } Текст main.cpp: #include <sys/stat.h> #include <sys/types.h> #include<stdio.h> #include <iostream> #include <cstring> #include "task.h" int main(void) { bool prog_works = true; while(prog_works) { char* MainDir = new char[100]; char* ChildDir = new char[100]; std::cout<<"\n\n"; std::cout<<"File directory + name: \n"; std::cin>>MainDir; FilePerms fp (MainDir); char*t=fp.Task(); std::cout<<"\nFile permissions: "; std::cout<<t; std::cout<<std::endl; fp.ChangePerms(); char ans; std::cout<<"\nWant to run again? y/n\n"; std::cin>>ans; if(tolower(ans)=='y') { std::cout<<"\nOkey, here we go again\n"; } else prog_works=false; } return 0; } Текст заголовного файлу: #ifndef TASK_H_ #define TASK_H_ class FilePerms { public: FilePerms(char* name); char* Task(); void ChangePerms(); //void OpenCloseFile(); private: char* name; }; #endif Текст Makefile: result: task.o main.o g++ task.o main.o -o result task.o: task.cpp task.h g++ -c task.cpp -lstdc++ main.o: main.cpp task.h g++ -c main.cpp -lstdc++ clean: rm -f result task.o main.o install: cp result /usr/local/bin/result uninstall: rm -f /usr/local/bin/result Результати виконання Висновок: на цій лабораторній роботі я оволодів практичними навиками роботи з компілятором GCC, G++ та системними викликами в операційній системі GNU/Linux; ознайомився із механізмом виконання системних викликів, процесом компіляції та побудови виконавчих файлів в цій ОС.
Антиботан аватар за замовчуванням

02.06.2019 19:06-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!