Как сохранить маску uint32_t как переменную-указатель?

#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 . См. Редактирование.