#c #function #inotify
#c #функция #inotify
Вопрос:
Это void inotifyFunc()
содержит одну переменную в качестве аргумента, который является char *path
. Я также хочу добавить еще одну переменную, которая должна содержать адрес uint32_t mask
, который в основном является ENOENT, IN_CREATE, IN_DELETE и т. Д., Который присутствует в inotify_add_watch()
, Но я не знаю, как сохранить uint32_t mask
в качестве переменной.
Моя главная цель — вызвать эту функцию в функции main, написав путь и одну команду (IN_CREATE, IN_DELETE и т. Д.) За раз, Который я должен назначить пути.
Надеюсь, вы поняли мой вопрос.
void inotifyFunc(char *path){
monitor.fd = inotify_init();
if(fcntl(monitor.fd, F_SETFL, O_NONBLOCK)){
perror("inotify not initialized: ");
exit(0);
}
monitor.wd = inotify_add_watch(monitor.fd, path, ENOENT);
if(monitor.wd < 0){
perror("Sorry");
exit(1);
}
else{
printf("Location '%s' is being monitorednn", path);
}
}
Комментарии:
1. Неясно, с какой сложностью вы столкнулись. Почему вы не можете просто добавить
uint32_t *mask
параметр в функцию? И почему это должен быть адрес / указатель?2. @kaylum Я хочу вызвать эту функцию в функции main и указать путь и команду, которые я хочу назначить пути. Например, я хочу отслеживать, создается или изменяется или удаляется путь и т.д.
Ответ №1:
Если я правильно понял
Изменить:
void inotifyFunc(char *path) {
Для:
void inotifyFunc(char *path, uint32_t *mask ) {
И затем
uint32_t mask = ENOENT;
inotifyFunc("....", amp;mask); // Address of (pointer to) mask
Затем используйте
monitor.wd = inotify_add_watch(monitor.fd, path, mask);
Редактировать
Поскольку я только что прочитал страницу руководства — см. Комментарий
Затем
monitor.wd = inotify_add_watch(monitor.fd, path, *mask);
Или
void inotifyFunc(char *path, uint32_t mask ) {
и
inotifyFunc("....", mask);
Комментарии:
1. Просто посмотрел inotify_add_watch . См. Редактирование.