Добавил:
Developer Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС БГУИР.pdf
Скачиваний:
13
Добавлен:
25.03.2023
Размер:
771.61 Кб
Скачать

com n

 

 

 

 

 

 

 

 

; ;

 

 

 

 

 

 

 

 

 

 

*)

 

 

 

// default

 

 

 

 

com 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

com n

 

 

 

 

 

 

 

 

; ;

 

 

 

 

 

 

 

 

 

 

esac

 

 

 

 

 

 

 

 

 

Функция пользователя: fname2 (arg1,arg2...argN)

 

 

{

 

 

 

 

 

 

 

 

 

Р

commands

 

 

 

 

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

Организация циклов:

 

 

 

 

 

1. for

var1 in list

 

 

 

 

У

do

 

 

 

 

 

Г

И

com1

 

 

 

 

 

 

 

 

 

 

 

com n

 

 

 

 

 

 

done

 

 

 

 

 

 

2. while

 

exp

 

 

 

 

 

Б

 

 

 

 

 

 

 

 

 

 

а

 

 

 

com1

 

 

 

 

к

 

 

 

 

 

 

е

 

 

 

 

com n

 

т

 

 

 

 

 

end

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. until

 

exp

 

 

// аналог do-while

 

 

 

do

 

о

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

com1

и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

л

 

 

 

 

 

 

 

 

com n

 

 

 

 

 

 

 

 

done

 

 

 

 

 

 

 

 

пи

 

 

Порядок выполнения работы

 

 

 

 

 

 

 

 

 

 

 

Б

 

 

 

 

 

 

 

 

 

 

1. Изучбть теоретическую часть лабораторной работы.

 

2. На

сать скрипт,

выводящий на консоль и в файл все аргументы ко-

мандной строки.

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

4. Написать скрипт, компилирующий и запускающий программу (имя ис- ходного файла и exe-файла результата задается пользователем в качестве аргу-

13

ментов командной строки). В случае ошибок при компиляции вывести на кон- соль сообщение об ошибках и не запускать программу на выполнение.

Варианты индивидуальных заданий

1.Написать скрипт для поиска файлов заданного размера в заданном ка- талоге (имя каталога задается пользователем в качестве третьего аргумента командной строки). Диапазон (min – max) размеров файлов задается пользова- телем в качестве первого и второго аргументов командной строки.

2.Написать скрипт с использованием цикла for, выводящийРна консоль размеры и права доступа для всех файлов в заданном каталоге и всех его подка- талогах (имя каталога задается пользователем в качестве первогоИаргумента ко- мандной строки). У

3.Написать скрипт для поиска заданной пользователем строки во всех файлах заданного каталога и всех его подкаталогахГ(строка и имя каталога за- даются пользователем в качестве первого и Бвторого аргументов командной строки). На консоль выводятся полный путь и имена файлов, в содержимом ко-

торых присутствует заданная строка, и их размер. Если к какому-либо каталогу нет доступа, необходимо вывести соответсвующееа сообщение и продолжить выполнение. к

4.Написать скрипт поискаеодин овых по содержимому файлов в двух каталогах, например Dir1 и Dir2. Пользователь задает имена Dir1 и Dir2 в каче- стве первого и второго аргументов командной строки. В результате работы программы файлы, имеющиеся в Dir1, сравниваются с файлами в Dir2 по их содержимому. На экрановыв дя ся число просмотренных файлов и результаты сравнения. и

5.Написать скр пт, нах дящий в заданном каталоге и его подкаталогах все файлы, в ладе ьцем которых является заданный пользователь. Имя владель- ца и каталогбзадаются пользователем в качестве первого и второго аргументов командной строки. Скрипт выводит результаты в файл (третий аргумент ко- манднойистроки) в следующем виде: полный путь, имя файла, его размер. На консольБвыводится общее число просмотренных файлов.

6.Написать скрипт, находящий в заданном каталоге и его подкаталогах все файлы заданного размера (имя каталога задается пользователем в качестве первого аргумента командной строки). Диапазон (min – max) размеров файлов

задается пользователем в качестве второго и третьего аргументов командной строки. Скрипт выводит результаты поиска в файл (четвертый аргумент ко- мандной строки) в следующем виде: полный путь, имя файла, его размер. На

консоль выводится общее число просмотренных файлов.

7. Написать скрипт, подсчитывающий суммарный размер файлов в задан- ном каталоге и всех его подкаталогах (имя каталога задается пользователем в ка-

14

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

честве первого аргумента командной строки). Скрипт выводит результаты под- счета в файл (второй аргумент командной строки) в следующем виде: каталог (полный путь), суммарный размер файлов, число просмотренных файлов.

Лабораторная работа №3

ОСНОВНЫЕ ПРИНЦИПЫ ПРОГРАММИРОВАНИЯ В ОС LINUX

Цель работы: изучить файловую систему ОС Linux и основных функций

для работы с каталогами и файлами.

Каталоги в ОС Linux это особые файлы. Для открытия или закрытияР

ка-

талогов существуют вызовы:

 

 

 

 

 

И

#include <dirent.h>

 

 

 

 

 

 

DIR *opendir (const char *dirname);

 

 

У

int closedir( DIR *dirptr);

 

 

 

 

 

 

 

Г

 

Для чтения записей каталога существует вызов:

 

struct dirent *readdir(DIR *dirptr);

 

Б

 

 

Структура dirent такова:

 

 

 

 

 

 

struct dirent {

 

 

 

 

а

 

 

 

long

d_ino;

 

 

 

 

off_t

 

d_off;

 

 

 

 

 

к

 

 

 

 

 

 

 

 

 

 

 

 

unsigned short d reclen;

 

 

 

 

char

 

d name [1];

 

 

 

 

 

};

 

 

е

 

 

 

 

 

 

 

 

 

 

 

 

 

Поле d_ino это чис

, к орое уникально для каждого файла в файловой

системе. Значением п ля d

offтслужит смещение данного элемента в реальном

каталоге. Поле d name есть начало массива символов, задающего имя элемента

 

 

ло

 

 

 

 

 

 

каталога. Данное мя граничено нулевым байтом и может содержать не более

MAXNAMLEN симвиов. Тем самым описываемая структура имеет перемен-

ную длину, хранящуюся в поле d_reclen.

 

 

 

 

 

ол

 

 

 

 

 

 

 

 

П мер вызова:

 

 

 

 

 

 

 

 

DIR *dp;б

 

 

 

 

 

 

 

 

struct dirent *d;

 

 

 

 

 

 

 

 

ри

 

 

 

 

 

 

 

 

 

d=readdir(dp);

 

 

 

 

 

 

 

 

При первом вызове функции readdir в структуру dirent будет считана

Б

 

 

 

 

 

 

 

 

 

первая запись каталога. После прочтения всего каталога в результате после-

дующих вызовов readdir будет возвращено значение NULL. Для возврата ука- зателя в начало каталога на первую запись существует вызов:

void rewindir(DIR *dirptr);

Чтобы получить имя текущего рабочего каталога, используется функция: char *getcwd(char *name, size_t size);

15

Порядок выполнения работы

1.Изучить теоретическую часть работы.

2.Написать программу вывода на экран содержимого заданного пользо- вателем каталога. Вывести с использованием программы содержимое текущего

икорневого каталогов. Предусмотреть контроль ошибок открытия, закрытия, чтения каталога. Вывод сообщений об ошибках должен производиться в стан- дартный поток вывода сообщений об ошибках (stderr) в следующем виде:

имя_модуля текст_сообщения.

 

Варианты индивидуальных заданий

Р

 

 

Должен быть контроль ошибок для всех операций с файлами и ката-

логами.

У

 

1. Отсортировать в заданном каталоге (аргумент 1 команднойИстроки) и во всех его подкаталогах файлы по следующим критериям (аргумент 2 команд-

ной строки, задается в виде целого числа): 1 – по размеру файла, 2 – по имени

файла. Записать отсортированные файлы в новый каталог (аргумент 3 команд-

ной строки).

Г

2. Найти в заданном каталоге (аргумент 1 командной строки) и всех его

подкаталогах заданный файл (аргумент 2 о

Бндной строки). Вывести на кон-

ма номер индексного дескриптора. Вывкти т же общее количество просмотрен-

соль полный путь к файлу, имя файла, его р змер, дату создания, права доступа,

подкаталогов вывести в заданныйесфайл (аргумент 2 командной строки) и на консоль имена файл , их размер и дату создания, удовлетворяющих задан- ным условиям: 1 – размер файла находится в пределах от N1 до N2 (N1, N2

ных каталогов и файлов.

3. Для заданного ка алога (аргумент 1 командной строки) и всех его

1 командной строки) и для каждого его подкаталога отдельно. Вывести на кон- соль и в файл (аргумент 2 командной строки) название подкаталога, количество файлов в нем, суммарный размер файлов, имя файла с наибольшим размером.

задаются в аргументах к мандной строки), 2 – дата создания находится в

 

 

т

пределах от M1 до M2 (M1, M2 задаются в аргументах командной строки).

4.

 

ов

Найти совпадающие по содержимому файлы в двух заданных катало-

гах (аргументы 1и2 командной строки) и всех их подкаталогах. Вывести на

консоль

в фа (аргумент 3 командной строки) их имя, размер, дату создания,

 

 

йл

права доступа, номер индексного дескриптора.

5.

бПодсчитать суммарный размер файлов в заданном каталоге (аргумент

и

 

Б

 

 

6. Написать программу, находящую в заданном каталоге и его подка- талогах все файлы заданного размера (имя каталога задается пользователем в качестве первого аргумента командной строки). Диапазон (min – max) разме-

ров файлов задается пользователем в качестве второго и третьего аргументов командной строки. Программа выводит результаты поиска в файл (четвер- тый аргумент командной строки) в следующем виде: полный путь, имя фай- ла, его размер. На консоль выводится общее число просмотренных файлов.

16

Соседние файлы в предмете Современные операционные системы