Touch вызывает ошибку ввода/вывода в связи с libfuse ⇐ Linux
-
Anonymous
Touch вызывает ошибку ввода/вывода в связи с libfuse
Я пытаюсь создать прокси-сервер с дополнительной проверкой разрешений. Появится диалоговое окно с вопросом, разрешено ли выполнение операции.
Источники: https://sourceforge.net/projects/secure-home/
Проблема была в контактной команде. Я читал в документации, что есть только один способ ответить на запрос закрытия: предохранитель_reply_err. Я установил ошибку на 0. Когда я удаляю строку Fuse_reply_err(req, 0), запрос так и не был выполнен. Документация: https://libfuse.github.io/doxygen/struc ... d83b59deff (см. объявление функции выпуска). Кроме того, во многих примерах в Интернете авторы делают то же самое (возвращают 0 ошибок). Проблема связана с сенсорной командой, которая возвращает «Невозможно закрыть файл: ошибка ввода/вывода». Я смотрю исходники coreutils touch: https://github.com/Coreutils/Coreutils/ ... rc/touch.c. Сообщение было напечатано, когда close вернуло ненулевое значение. Я прочитал документацию, и объявление закрытия выглядит так:
int close(int fd) Итак, он возвращает int, и в документации сказано, что в случае успеха он должен возвращать 0. Но я не знаю, как вернуть 0 в результате
void(* предохранитель_lowlevel_ops::release) (fuse_req_t req, плавкий_ино_t ino, struct плавкий_файл_информация *fi) Мой код выглядит так:
static void sechome_close(fuse_req_t req, плавкий_ино_t ino, struct плавкий_файл_информация *fi) { struct sh_inode *inode = get_real_inode(ino); --inode->ref_count; если (0 == индексный дескриптор->ref_count) { закрыть (фи->fh); } Fuse_reply_err (требуется, 0); }
Я пытаюсь создать прокси-сервер с дополнительной проверкой разрешений. Появится диалоговое окно с вопросом, разрешено ли выполнение операции.
Источники: https://sourceforge.net/projects/secure-home/
Проблема была в контактной команде. Я читал в документации, что есть только один способ ответить на запрос закрытия: предохранитель_reply_err. Я установил ошибку на 0. Когда я удаляю строку Fuse_reply_err(req, 0), запрос так и не был выполнен. Документация: https://libfuse.github.io/doxygen/struc ... d83b59deff (см. объявление функции выпуска). Кроме того, во многих примерах в Интернете авторы делают то же самое (возвращают 0 ошибок). Проблема связана с сенсорной командой, которая возвращает «Невозможно закрыть файл: ошибка ввода/вывода». Я смотрю исходники coreutils touch: https://github.com/Coreutils/Coreutils/ ... rc/touch.c. Сообщение было напечатано, когда close вернуло ненулевое значение. Я прочитал документацию, и объявление закрытия выглядит так:
int close(int fd) Итак, он возвращает int, и в документации сказано, что в случае успеха он должен возвращать 0. Но я не знаю, как вернуть 0 в результате
void(* предохранитель_lowlevel_ops::release) (fuse_req_t req, плавкий_ино_t ino, struct плавкий_файл_информация *fi) Мой код выглядит так:
static void sechome_close(fuse_req_t req, плавкий_ино_t ino, struct плавкий_файл_информация *fi) { struct sh_inode *inode = get_real_inode(ino); --inode->ref_count; если (0 == индексный дескриптор->ref_count) { закрыть (фи->fh); } Fuse_reply_err (требуется, 0); }
Мобильная версия