Системнй виклик stat.

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

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

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

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

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

Міністерство освіти України НУ “Львівська політехніка” Кафедра ЕОМ Звіт про виконання лабораторної роботи №4 з дисципліни “Проектування операційних систем, утиліт і драйверів” Назва роботи: “Системнй виклик stat” Виконав: студент групи СПР-5 Львів – 2004 Мета: Познайомитись і навчитися використовувати системні виклики stat, access, utime операційної системи Linux. Познайомитися з утилітою stat. Призначення, синопсис та основні параметри утиліти та системних викликів stat – вивести статус файлу чи файлової системи. stat [OPTION] FILE... -f, --filesystem - вивести статус файлової системи замість статусу файлу. -c --format=FORMAT - використати специфікатор FORMAT. -L, --dereference слідувати за посиланнями. -t, --terse - друк інформації в стислій формі. int stat(const char *file_name, struct stat *buf) – отримати інформацію про файл; struct stat { dev_t st_dev; /* пристрiй */ ino_t st_ino; /* номер inode */ mode_t st_mode; /* бiти повноважень */ nlink_t st_nlink; /* кiлькiсть hard-link'iв */ uid_t st_uid; /* iдентифiкатор власника файла */ gid_t st_gid; /* iдентифiкатор групи власникiв */ dev_t st_rdev; /* тип пристрою (якщо це inode пристрою) */ off_t st_size; /* розмiр файла, в байтах */ unsigned long st_blksize; /* розмiр блоку даної файлової системи */ unsigned long st_blocks; /* кiлькiсть видiлених блокiв */ time_t st_atime; /* час останнього доступу */ time_t st_mtime; /* час останньої модифiкацiї */ time_t st_ctime; /* час останньої змiни inode */ }; int access(const char *pathname, int mode) – інформація про тип доступу користувача до файлу; int utime(const char *filename, struct utimbuf *buf) – зміна часу останнього доступу/модифікації файлу; struct utimbuf { time_t actime; /* час доступу */ time_t modtime; /* час модифікації */ }; Лістинг програми #include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <utime.h> #include <time.h> #define USING "using: \"lab4 <file_name>\"\n" #define ERROR "failed to read parameters of this file\n" void demo_access(char *); void demo_stat(char *); void demo_utime(char *); int main(int argc, char *argv[]) { if(argc != 2) { fprintf(stderr,USING); exit(-1); } if(access(argv[1],0) == -1) { fprintf(stderr,ERROR); exit(-1); } demo_access(argv[1]); demo_stat(argv[1]); demo_utime(argv[1]); puts("File status after reset create- and modification-time:"); demo_stat(argv[1]); exit(0); } void demo_access(char *path) { char yes[] = "yes", no[] = "no", *flag; puts("system call \"accsess\":"); printf("The file %s:\n", path); if(access(path,4) == 0) flag = yes; else flag = no; printf("\tread access:\t%s\n", flag); if(access(path,2) == 0) flag = yes; else flag = no; printf("\twrite access:\t%s\n", flag); if(access(path,1) == 0) flag = yes; else flag = no; printf("\texecute access:\t%s\n", flag); putchar('\n'); } void demo_stat(char *path) { struct stat buf; time_t t; puts("system call \"stat\":"); printf("The file %s:\n",path); stat(path,&buf); printf("\tlength:\t\t\t%d\n", buf.st_size); t = buf.st_atime; printf("\tlast access:\t\t%s", ctime(&t)); t = buf.st_mtime; printf("\tlast modification:\t%s", ctime(&t)); putchar('\n'); } void demo_utime(char *path) { struct utimbuf times; times.actime = 0; times.modtime = 0; utime(path,&times); } В дану програму необхідно передати із командної стрічки назву файлу, про який збирається інформація. Спочатку буде видана інформація про права доступу до файлу, отримана за допомогою системного виклику accsess(). Потім буде видана деяка інформація, отримана шляхом використання stat(). Після цього системним викликом utime() час останнього доступу до файлу та останньої його модифікації буде встановлений в нуль, і ще раз викликається stat(), щоби пересвідчитися в цьому. Висновок Під час виконання даної лабораторної роботи я ознайомився із системними викликами ОС Linux та утилітою stat, які дають змогу отримувати інформацію про файли. Список літератури Кейт Хевіленд, Дайна Грей, Бен Салама “Системное программирование в Unix”. Москва 2000. Електронні ресурси кафедри ЕОМ.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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