ого спільно з fstat (). Якщо також необхідно виявляти символічні посилання, то разом з ім'ям файлу слід використовувати lstat ().
На відміну від struct dirent, яку повертає readdir (), struct stat має досить багато обов'язкових стандартних полів:
· st_mode - права доступу до файлу (користувач, група, решта) і прапори.
· st_ino - порядковий номер файлу.
· st_dev - пристрій, на якому розташований файл.
· st_nlink - лічильник числа зв'язків.
· st_uid - ідентифікатор користувача-власника файлу.
· st_gid - ідентифікатор групи-власника.
· st_size - розмір файлу в байтах (для файлів regular).
· st_atime - час останнього доступу до файлу.
· st_mtime - час останньої модифікації файлу.
· st_ctime - час створення файлу.
Використовуючи макрос S _ * () для поля st_mode, можна визначити тип файлу:
· S_ISBLK (mode) - спеціальний блоковий файл? (зазвичай це блоковий пристрій).
· S_ISCHR (mode) - спеціальний символьний файл? (зазвичай це символьне пристрій).
· S_ISDIR (mode) - каталог?
· S_ISFIFO (mode) - UNIX-канал (pipe) або файл типу FIFO?
· S_ISLNK (mode) - символічна посилання?
· S_ISREG (mode) - звичайний файл?
Функція stat () виконується досить повільно на більшості файлових систем, тому краще буде зберігати цю інформацію в пам'яті на випадок, якщо вона знадобиться пізніше.
Приклад програми:
# include lt; errno.h gt;
# include lt; dirent.h gt;
# include lt; string.h gt;
# define FOUND 0
# define NOT_FOUND 1
# define READ_ERROR 2
# define OPEN_ERROR 3
# define NOARG 4main (int argc, char * argv []) {dirent * dp; * dirp; char * name; (argc gt; 1) {= argv [1];
} else {NOARG;
}=opendir (. ); (dirp) {= 0; ((dp=readdir (dirp))!=NULL) {(strcmp (dp- gt; d_name, name ) == 0) {(dirp); FOUND;
}
} else {(errno == 0) {(dirp);
} (dirp);
}
} OPEN_ERROR;
}
2. Практична частина
. 1 Розробка блок-схеми алгоритму
Малюнок 4. Блок-схема
2.2 Прототип системного програмного забезпечення для реалізації схожою завдання
# include lt; sys/types.h gt;
# include lt; sys/stat.h gt;
# include lt; stdio.h gt; char * ctime (); ()
{_ t last; struct stat st; (stat (. raquo ;, amp; st), last=st.st_mtime;; sleep (2))
{(. raquo ;, amp; st); (last!=st.st_mtime)
{= st.st_mtime; ( Був створений або видалений якийсь файл:% s , ( amp; last));
}
}
}
Малюнок 1. ScreenShot вихідного коду програми.
Малюнок 2. Виконання вихідної програми.
dirent каталог програма алгоритм
2.3 Програмний код реалізації програми для автоматичного оновлення і виведення інформації за вказаною каталогом
Малюнок 5. ScreenShot вихідного коду програми.
Малюнок 6. Компіляція програми, команда на виконання, виконання програми.
Висновок
У даному курсовому проекті я ознайомилася зі структурою dirent. Виконала побудова блок-схеми, вивчила прототип програми для реалізації схожою завдання. Написала програмний код шляхом зміни заданого алгоритму програми за допомогою системних функцій opendir і readdir.
Список використаних джерел та літератури
Література
. Богатирьов А. Хрестоматія з програмування на Сі в Unix
. Столлман Р. Компілятор мов C, C ++, Objective C gcc 2.7
. Граннеман С. Linux. Кишеньковий довідник
Дистанційні електронні ресурси
1. # justify gt ;. # justify gt ;. # justify gt ;. # justify gt ;. h...