Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
3 / 3 / 0
Регистрация: 19.10.2009
Сообщений: 28
1

Изменение файла

11.01.2010, 12:05. Показов 1977. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как в Си отследить изменение что происходят с файлами в какой-то папке? Изменениями считается добавление, удаление файлов, изменение размеров файлов и время их модификации.

Использовать функцию stat()? Если да, так опишите подробнее ее использование!

Заранее благодарна!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.01.2010, 12:05
Ответы с готовыми решениями:

Изменение содержимого файла без вызова write
С новым годом всех и всем привет. Вопрос следующий: Есть ли возможность записывать изменения в...

Изменение содержимого exe файла (вставка одного файла внутрь другого)
Нужно вставить в фаил 1.exe фаил 2.exe.

Изменение файла Excel из другого файла
Добрый день всем, Подскажите, пожалуйста, кто-нибудь сталкивался с проблемой изменения другого...

Изменение файла
Здравствуйте! как мне сделать в Linux так, что бы любое изменения файла выводилось на экран?...

7
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
11.01.2010, 12:19 2
Статом ты затерроризируешь файловую систему, постоянно отслеживая изменения, да и неудобно. Я сейчас не дома, так бы показал конкретный пример. Пока можешь сама почитать про интерфейс inotify.
0
3 / 3 / 0
Регистрация: 19.10.2009
Сообщений: 28
11.01.2010, 12:29  [ТС] 3
А если нужно отслеживать изменения каждые 15 сек ... такая функция подойдет??
0
Эксперт С++
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
11.01.2010, 14:51 4
Цитата Сообщение от Gae4ka_1 Посмотреть сообщение
такая функция подойдет??
такая - это какая?
линукс есть?
0
3 / 3 / 0
Регистрация: 19.10.2009
Сообщений: 28
11.01.2010, 22:25  [ТС] 5
inotify
0
Эксперт С++
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
11.01.2010, 22:30 6
man inotify
почитайте
0
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
11.01.2010, 22:38 7
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/inotify.h>
 
#define BUFLEN 4096
 
const char *strevent(uint32_t);
void notifier(const char *);
 
int
main(int argc, char *argv[])
{
    if(argc != 2) {
        fprintf(stderr, "Usage: %s <dir_name>\n", argv[0]);
        return 1;
    }
    notifier(argv[1]);
    return 0;
}    
 
const char *
strevent(uint32_t mask)
{
    switch(mask) {
        case IN_ATTRIB:
            return "Metadata changed";
        case IN_MODIFY:
            return "Modified";
        case IN_CREATE:
            return "Created";
        case IN_DELETE:
            return "Deleted";
    }
    return "Unknown event";
}
 
void
notifier(const char *dirname)
{
    int fd, wd;
    char buf[BUFLEN];
    ssize_t i, len;
    struct inotify_event *event;
 
    /* инициализация стража */
    if( (fd = inotify_init()) < 0) {
        perror("inotify_init:");
        exit(-1);
    }
    
    /* добавление стража событий для директории */
    wd = inotify_add_watch(fd, dirname,
                           IN_MODIFY | IN_ATTRIB |
                           IN_CREATE | IN_DELETE);
    if(wd < 0) {
        perror("inotify_add_watch");
        exit(-1);
    }
    
    while(1) {
        i = 0;
        /* просмотр событий в каталоге */
        len = read(fd, buf, BUFLEN);
        while(i < len) {
            event = (struct inotify_event *) &buf[i];
            printf("%s: %s\n", event->name, strevent(event->mask));
            i += sizeof(struct inotify_event) + event->len;
        }
        /* sleep(15); */
        /* в принципе здесь нафиг не нужен sleep,
         * т.к. чтение из дескриптора событий идет
         * в блокирующем режиме и не нагружает процессор
         */
    }
}
Gae4ka_1, на одном терминале запускаешь программу с указанием каталога для мониторинга, на другом заходишь в каталог, делаешь в нем что-нибудь и наблюдаешь события.
1
3 / 3 / 0
Регистрация: 19.10.2009
Сообщений: 28
11.01.2010, 23:05  [ТС] 8
Спасибо))
0
11.01.2010, 23:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.01.2010, 23:05
Помогаю со студенческими работами здесь

Изменение файла
Почему когда я изменяю файл html в php, то на хостинге страничка не загружается, а появляется вот...

Изменение файла
Здравствуйте, Мне нужно написать программу: Выполнить поиск определенной строки в файле. Если...

изменение файла
доброго времени суток с толкнулся с такой проблемой: есть бинарный файл(ехе), нужно в его конец...

Изменение заголовка файла
Всем привет, извиняюсь если не там написал. Есть проблема, мне нужно изменить заголовки файлов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru