Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Мета роботи

Читайте также:
  1. Актуальність соціальної роботи у світлі реформування пенітенціарної системи України.
  2. Алгоритм виконання курсової роботи
  3. Алгоритмічні роботи з величинами
  4. Безпека роботи з комп'ютерною технікою.
  5. Бібліографічне оформлення індивідуальної роботи
  6. Взаємозв'язок соціології та соціальної роботи.
  7. Взаємозв'язок теорії та практики соціальної роботи
  8. ВИБІР ТЕМИ КУРСОВОЇ РОБОТИ
  9. ВИБІР ТЕМИ КУРСОВОЇ РОБОТИ.
  10. Вивчення показників роботи і організації бухгалтерського обліку підприємства

scandir, alphasort, versionsort - поиск совпадающих элементов в каталоге

 

СИНТАКСИС

#include <dirent.h>

int scandir(const char *dir, struct dirent ***namelist,

int(*select)(const struct dirent *),

int(*compar)(const struct dirent **, const struct dirent **));

int alphasort(const void *a, const void *b);

int versionsort(const void *a, const void *b);

 

ОПИСАНИЕ

Функция scandir() производит поиск элементов в каталоге dir, посылая каждому элементу вызов select(). Элементы, которым select() возвращает ненулевое значение, записываются в строках и размещаются в памяти при помощи malloc(); они сортируются посредством функции qsort() и функции сравнения compar(), а затем накапливаются в массиве namelist, который размещается в памяти функцией malloc(). Если select равен NULL, то выбираются все записи.

Функции alphasort() и versionsort() могут быть использованы как функции сравнения compar(). Первая упорядочивает записи с помощью strcoll(), а вторая использует strverscmpcmp() для строк (*a)->d_name и (*b)->d_name.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

Функция scandir() возвращает количество выбранных записей или -1, если произошла ошибка.

Функции alphasort () и versionsort() возвращают целое число меньше нуля, ноль или целое число больше нуля, если первый аргумент функции соответственно меньше второго, равен второму или больше второго аргумента.

Текст программы:

#include <iostream>

#include <cstdlib>

#include <sys/types.h>

#include <sys/stat.h>

#include <unistd.h>

#include <cstring>

#include <dirent.h>

 

using namespace std;

 

struct stat fileinfo;

mode_t perm; /*переменная для прав доступа*/

uid_t owner_ID; /*переменная для ID владельца*/

gid_t group_ID; /*переменная для ID группы владельца*/

struct dirent **namelist;

 

int select(const struct dirent *d)

{

if (strstr(d->d_name,"lr"))

return 1;

else

return 0;

}

 

int main(int argc, char *argv[])

{

if(argc==2)

{

if((stat(argv[1],&fileinfo))==-1)

{

cout<<"Error: V danoi direktorii net takogo faila!!!"<<endl;

cin.get();

cin.get();

}

else

{

cout<<" "<<endl;

cout<<"***Prosmotr informacii o faile: "<<argv[1]<<"***"<<endl;

cout<<"------------------------------------------------"<<endl;

cout<<"Prava dostupa k failu: "<<fileinfo.st_mode<<endl;

cout<<"Vladelec faila: "<<fileinfo.st_uid<<endl;

cout<<"Gruppa vladelca: "<<fileinfo.st_rdev<<endl;

cout<<"Kol. gostkih ssylok: "<<fileinfo.st_nlink<<endl;

cout<<"Inode: "<<fileinfo.st_ino<<endl;

cout<<"Vremya poslednego izmeneniya: "<<ctime(&fileinfo.st_ctime);

cout<<"------------------------------------------------"<<endl;

cin.get();

}

}

 

if((argc==3) && (strcmp(argv[1],"-l")!=0))

{

sscanf((argv[2]),"%o",&perm);

if((chmod(argv[1],perm))==-1)

{

cout<<"Error: V danoi direktorii net takogo faila!!!"<<endl;

cin.get();

}

else

{

cout<<"Prava dostupa ustanovleny!!!"<<endl;

cin.get();

}

}

 

if(argc==5)

{

sscanf((argv[2]),"%o",&perm);

sscanf(argv[3],"%i",&owner_ID);

sscanf(argv[4],"%i",&group_ID);

if((chmod(argv[1],perm))==-1)

{

cout<<"Error: V danoi direktorii net takogo faila!!!"<<endl;

cin.get();

}

if((chown(argv[1],owner_ID,group_ID))==-1)

{

cout<<"Error: cannot set new owner and group"<<endl;

cin.get();

}

else

{

cout<<"Prava dostupa,Owner_id and group_id ustanovleny!!!"<<endl;

cin.get();

}

}

 

if((argc==3) && (strcmp(argv[1],"-l")==0))

{

cout<<" "<<endl;

cout<<"*** Vyvod informacyi o failax kataloga po maske *lr* ***"<<endl;

int n,i;

n = scandir(argv[2], &namelist,&select,alphasort);

cout<<"-----------------------------------"<<endl;

if (n < 0)

{

cout<<"Error!!!"<<endl;

}

else

{

for(i=0;i<n;i++)

{

cout<<" "<< namelist[i]->d_name<<endl;

delete(namelist[i]);

}

delete(namelist);

}

cout<<"-----------------------------------"<<endl;

cin.get();

}

}

Результат:

 

[root Lr1]#./a.out q

 

***Prosmotr informacii o faile: q***

------------------------------------------------

Prava dostupa k failu: 33206

Vladelec faila: 500

Gruppa vladelca: 0

Kol. gostkih ssylok: 1

Inode: 4432

Vremya poslednego izmeneniya: Mon Feb 22:16:31 25.02.2009

------------------------------------------------

Вывод: На даной лабораторной роботе я изучил системне функции для заданий прав доступа к файлам, а также функции для работы с каталогами и выполнил задание согласно своему варианту.

Мета роботи

Оволодіти методикою встановлення програмного забезпечення та роботи з архівами.

 

2 Теоретичні відомості

Програмне забезпечення ОС Linux може бути у вигляді RPM- пакетів або у вигляді вихідного тексту, котрий зберігається на багатьох вузлах Internet.

Процедура встановлення або оновлення програмного забезпечення в ОС Linux ніколи не було складним завдяки широкому застосуванню менеджера пакетів Red Hat Package Manager. Програмне забезпечення міститься у особливого роду архівах, котрі називаються RPM- пакетами. Скорочення “RPM” виникло від назви “Red Hat Package Manager” - “менеджер пакетів Red Hat”.RPM – архів містить всі файли програм, конфігурації, дані та навіть документацію. За допомогою однієї операції менеджер пакетів Red Hat встановить усі ці пакети на систему. Також за допомогою даного менеджера пакетів, так само легко можна видалити необхідні нам пакети. Для встановлення або видалення необхідного програмного забезпечення можна скористатись командним рядком або графічним інтерфейсом. Наприклад для того щоб заінсталювати або видалити потрібний пакет необхідно в командному рядку набрати: # rpm -i назва_пакету

# rpm -e назва_пакету

Для того, щоб скористатись графічним інтерфейсом необхідно просто запустити його, клацнувши 2 раза мишею по ньому та натиснути кнопку “застосувати”, як показано на рисунку 2.1:

 
 

Рисунок 2.1 Вікно встановлення програмних пакетів RPM за допомогою графічного інтерфейсу

 

Тепер давайте розглянемо процес встановлення програмних пакетів з вихідним текстом. Більшість з таких пакетів містяться у заархівованому вигляді, тому спочатку давайте ознайомимось з методами архівування та стиснення інформації в ОС Linux.

Стиснення або архівація – це процес перекодування даних з метою зменшення їх об'єму. Використовується для більш раціонального використання пристроїв збереження та передачі даних. Стиснена інформація утворює стиснений архів.

Стиснений архів – це архівний файл, створений за допомгою утиліти tar, а потім стиснений за допомогою утиліти gzip (для ОС Unix).

Tar – (від англ. tape archive) — назва традиційної для Unix, програми для работи з архівами. На сьогоднішній день утиліта tar використовується для збереження декількох файлів всередині одного, для створення архіву файлової системи. Як і інші утиліти Unix, tar — спеціалізована програма, котра підтримує философію Unix: “робити тільки одну справу” (працювати з архівами), але робити її добре. Тому tar не створює стиснених архівів, а використовує для цього зовнішні утиліти, наприклад gzip.

Gzip або gunzip (скорочено від GNU zip) – утиліта стиснення та декомпресії файлів, що використовує алгоритм Лемпеля- Зіва. У відповідності до традицій Unix – програмування, утиліта gzip виконує тільки одну функцію: стиснення та розпакування. Вона не може стискати декілька файлів в один архів. При стисненні до оригінальної назви файлу додається суфікс.gz. Для стиснення декількох файлів, їх спочатку зазвичай архівують за допомогою утиліти tar, а потім отриманий архів стискають за допомогою утиліти gzip. Таким чином стиснені архіви мають подвійне розширення.tar.gz.

Отже, якщо у нас є пакет з розширенням.tar.gz нам впершу чергу необхідно його розпакувати за допомогою утиліти gunzip, а потім розархівувати за допомогою утиліти tar. Замість команди gunzip можна використовувати команду gzip -d. Наприклад, якщо ми хочемо розпакувати файл nvidia-settings-1.0.tar.gz в командному рядку необхідно виконати: # gunzip nvidia-settings-1.0.tar.gz

Отримаємо файл nvidia-settings-1.0.tar, який тепер можем розархівувати. Але щоб полегшити собі роботу можна просто ввести команду # tar xvzf nvidia-settings-1.0.tar.gz.

В таблиці 2.1 наведено основні опції, що використовувались в цьому випадку.

 

Таблиця 2.1 Основні опції команди tar

Опції Пояснення
x Розпакувати
v Увімкнення детального режиму відображення розпаковки. Використання опції vv дає змогу вивести більш детальну інформацію про розпаковку
z Означає, що перед розархівуванням файл повинен бути розпакований командою gunzip
f Означає, що наступна стрічка в командному рядку вказує на файл над яким слід проводити операцію
с Використовується для створення нового архіву
t Використовується для перегляду вмісту архіву

 

Після того, як заархівований програмний пакет розархівовано можна переходити безпосередньо до його компіляції. Компіляція – це процес перетворення тексту програми, написаного на мові програмування, у машинні коди (інструкції процесора). Програми котрі виконують компіляцію називаються компіляторами. Компіляцію програмного забезпечення можна звести до трьох простих команд:

1. /configure

2. make

3. make install

Команда./configure визначає конфігурацію системи, команда make виконує компіляціювикористовуючи при цьому Makefile, а команда make install встановлює програму.

 

3 Підготовка до роботи
3.1 Ознайомитись з інструкцією.
3.2 Опрацювати теоретичний матеріал за темою роботи

3.3 Усно дати відповіді на контрольні запитання вхідного контролю
3.4 Продумати методику виконання роботи

3.5 Підготувати бланк звіту

 

4 Питання вхідного контролю

4.1 Пояснити суть процесу інсталяції програмного забезпечення

4.2 Пояснити суть процесу компіляції програмного забезпечення

4.3 Пояснити суть процесу архівації та стиснення даних

 

5 Основне обладнання
5.1 Персональні комп'ютери

5.2 Операційна система Linux

 




Дата добавления: 2014-12-19; просмотров: 35 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.014 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав