Системнi виклики opendir, readdir, closedir, rewinddir, seekdir, telldir та scandir.

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

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

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

Рік:
2004
Тип роботи:
Лабораторна робота
Предмет:
Проектування операційних систем, утиліт і драйверів
Група:
СПР-5

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

Міністерство освіти України НУ “Львівська політехніка” Кафедра ЕОМ Звіт про виконання лабораторної роботи №3 з дисципліни “Проектування операційних систем, утиліт і драйверів” Назва роботи: “Системнi виклики opendir, readdir, closedir, rewinddir, seekdir, telldir та scandir” Виконав: студент групи СПР-5 Львів – 2004 Мета: Ознайомитися і навчитися використовувати функції для роботи з директоріями opendir, readdir, closedir, rewinddir, seekdir, telldir, scandir операційної системи Linux. Ознайомитись (чи згадати і закріпити) з механізмом передачі параметрів у програму. Вихідний текст програми #include <stdio.h> #include <string.h> #include <dirent.h> #define NAME_LENGTH 256 #define USING "using: \"labor3 <dir_name>\"\n" #define ERROR "error while reading directory\n" void processDir(DIR *); int main(int argc, char **argv) { DIR * dir; if (argc != 2) { fprintf(stderr, USING); exit(-1); } else if ((dir = opendir(argv[1])) == 0) { fprintf(stderr, ERROR); exit(-1); } processDir(dir); closedir(dir); exit(0); } void processDir(DIR * dir) { struct dirent * dirEntry; int i = 0; while((dirEntry = readdir(dir)) != NULL) { printf("%4d\t%s\n", i++, dirEntry->d_name); } } На вхід програми подається ім’я директорії (якщо воно містить пробіли, то береться в подвійні лапки). Вихід – на консоль виводиться список елементів заданої директорії. Призначення, синопсис та основні параметри системних викликів DIR *opendir(const char *name) – відкрити директорію для читання; int closedir(DIR *dir) – закрити директорію; readdir – читання елемента директорії _syscall3(int, readdir, uint, fd, struct dirent *, dirp, uint, count); int readdir(unsigned int fd, struct dirent *dirp, unsigned int count); struct dirent { long d_ino; /* inode number */ off_t d_off; /* offset to this dirent */ unsigned short d_reclen; /* length of this d_name */ char d_name [NAME_MAX+1]; /* file name (null-terminated) */ } struct dirent *readdir(DIR *dir); void rewinddir(DIR *dir) – скид потоку директорії (встановлення вказівника на перший void seekdir(DIR *dir, off_t offset) – встановити позицію для наступного виклику readdir() в потоці директорії. void telldir(DIR *dir) – повернення поточного розташування в потоці директорії. int scandir(const char *dir, struct dirent ***namelist, int (*select)(const struct dirent *), int (*compar)(const struct dirent **, const struct dirent **)) – сканування директорії на виявлення вмісту; int alphasort(const struct dirent **a, const struct dirent **b) – функція для порівняння двох елементів директорії. Висновок В процесі виконання даної лабораторної роботи я ознайомився із системними викликами ОС Linux, які використовуються для роботи із директоріями файлової системи. Список літератури Кейт Хевіленд, Дайна Грей, Бен Салама “Системное программирование в Unix”. Москва 2000. Електронні ресурси кафедри ЕОМ.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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