Проблема, с которой вы столкнулись, связана с тем, что в FUSE (Filesystem in Userspace) есть несколько функций, которые могут быть необходимыми для корректной работы файловой системы. Когда вы видите сообщение "not implemented", это обычно значит, что метод доступа (или другая функция) не реализован в вашей файловой системе.
Ваша проблема может быть вызвана несколькими факторами:
1. **Функция не зарегистрирована**: Убедитесь, что функция `fs_access` корректно зарегистрирована в структуре `fuse_operations` и передана в вызов `fuse_main()` или аналогичную функцию.
2. **Неправильный тип указателя**: В C++ может возникать путаница с указателями на функции, особенно если вы используете `std::function` или лямбда-функции. Убедитесь, что тип указателя на вашу функцию совпадает с ожидаемым типом в `fuse_operations`.
3. **Проблемы с компиляцией**: Проверьте, нет ли у вас ошибок или предупреждений при компиляции, которые могли бы указывать на проблемы с реализацией функций.
4. **Стандартные значения**: Если вы используете C++, возможно, вы не передали значения по умолчанию для других функций в структуре `fuse_operations`, что может привести к тому, что библиотека будет использовать их значения по умолчанию (в которых некоторые функции могут быть не реализованы).
Пример структуры `fuse_operations` с правильным указанием функции `access` может выглядеть так:
```cpp
struct fuse_operations my_operations = {
.access = fs_access,
// Другие функции ...
};
```
Если вы всё это проверили, а проблема сохраняется, попробуйте сделать следующее:
- Отладьте код, чтобы убедиться, что ваш `fs_access` вызывается, и действительно возвращает 0.
- Используйте логи, чтобы отследить, какой именно код вызывает функцию и какой путь к файлу передается в нее.
- Проверьте документацию FUSE и убедитесь, что вы не пропустили каких-либо требований к реализации.
Если вы предоставите больше информации о коде и том, как вы настроили FUSE, я могу помочь более конкретно.