Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
Кафедра ЗІ
/
З В І Т
до лабораторної роботи №6
з курсу: «Операційні системи»
на тему:
«Системні виклики. Робота з компілятором GCC
в ОС GNU/Linux»
Варіант № 10
МЕТА РОБОТИ – оволодіти практичними навиками роботи з компілятором GCC та системними викликами в операційній системі GNU/Linux;
ознайомитись із механізмом виконання системних викликів, процесом компіляції та побудови виконавчих файлів в цій ОС.
Завдання
За допомогою системних викликів у своїй домашній директорії створити дворівневу структуру директорій. У директорії другого рівня створити 2 файли та перемістити їх у директорію першого рівня. Видалити пусту папку. Реалізувати обробку помилок, які можуть виникнути в ході роботи програми.
Тексти програм
Lab.h
#ifndef WORK_H_
#define WORK_H_
int lab(void);
#endif /*WORK_H_*/
Work.c
#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "lab.h"
int lab(void)
{
mkdir("./level1", 0777);
mkdir("./level1/level2", 0777);
int fd1 = open("./level1/level2/a.txt", O_RDWR|O_CREAT, 0777); // Originally 777 (see comments)
int fd2 = open("./level1/level2/b.txt", O_RDWR|O_CREAT, 0777);
if (fd1 != -1) {
// use file descriptor
close(fd1);
}
if (fd2 != -1) {
// use file descriptor
close(fd2);
}
rename("./level1/level2/a.txt", "./level1/a.txt");
rename("./level1/level2/b.txt", "./level1/b.txt");
remove("./level1/level2");
return 0;
}
Main.c
#include <stdio.h>
#include "lab.h"
int main(void)
{
int Result = lab();
printf(Result);
return 0;
}
Makefile
work: work.o main.o
gcc work.o main.o -o startLab6 -lm
calculate.o: work.c lab.h
gcc -c work.c
main.o: main.c lab.h
gcc -c main.c
clean:
rm -f work work.o main.o
install:
cp work /usr/local/bin/work
uninstall:
rm -f /usr/local/bin/work
Результати виконання
super@ubuntu:~/Завантаження/lab6$ ls
lab.h main.c Makefile work.c
super@ubuntu:~/Завантаження/lab6$ make
cc -c -o work.o work.c
work.c: In function ‘lab’:
work.c:15:5: warning: implicit declaration of function ‘close’; did you mean ‘pclose’? [-Wimplicit-function-declaration]
close(fd1);
pclose
gcc -c main.c
gcc work.o main.o -o startLab6 –lm
super@ubuntu:~/Завантаження/lab6$ ./startLab6
super@ubuntu:~/Завантаження/lab6$ ls
lab.h level1 main.c main.o Makefile startLab6 work.c work.o
super@ubuntu:~/Завантаження/lab6$ cd level1/
super@ubuntu:~/Завантаження/lab6/level1$ ls
a.txt b.txt
super@ubuntu:~/Завантаження/lab6/level1$
Висновки
На цій лабораторній роботі я оволодів практичними навиками роботи з компілятором GCC та системними викликами в операційній системі GNU/Linux,
ознайомився із механізмом виконання системних викликів, процесом компіляції та побудови виконавчих файлів в цій ОС, шляхом виконання тестового завдання відповідно до варіанту. Тестове завдання було виконано успішно, тексти програм та результати з терміналу подано у звіті.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!