Я пытаюсь внедрить драйвер FUSE. Что я сделал, взяты основные операции, которые вы переопределите своей собственной функцией, и я добавил cout << operation << path << endl;
. Поэтому я вижу, какая операция вызывается. Вот моя open
функция:Fuse C++ driver - read() реализация
int Router::open(const char *path, struct fuse_file_info *fi) {
std::cout << "open " << path << std::endl;
return 0;
}
Это возвращает 0
поэтому открытую удастся все время. Тогда, вот моя read
функция:
int Router::read(const char *path, char *buf, size_t size, off_t offset, struct fuse_file_info *fi) {
std::cout << "read " << path << "Size: " << size << "Offset: " << offset << std::endl;
buf[0] = 'h';
buf[1] = '\0';
return 2;
}
Это должно скопировать h\0
в буфер. Но когда я это делаю: cat myfile
, он запускает мою функцию open()
, которая преуспевает, тогда она запускает мою функцию read()
, но вывод cat - ничто. Он должен выводить h
, но это не так. Что я делаю не так?
Кроме того, я считаю, что под OSX, точно такой же код работает только функцию open
, но тем не read()
Что может быть проблема?