Робота з компілятором 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:26

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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