FUSE 드라이버를 구현하려고합니다. 내가 한 것은 당신이 자신의 함수로 오버라이드 한 기본 연산을 취하여 cout << operation << path << endl;
을 추가했기 때문에 어떤 연산이 호출되는지 알 수있다.퓨즈 C++ 드라이버 - read() 구현
int Router::open(const char *path, struct fuse_file_info *fi) {
std::cout << "open " << path << std::endl;
return 0;
}
이 항상 성공해야하므로 오픈 0
를 반환 여기 내 open
기능입니다. 이 버퍼에 h\0
을 복사해야
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;
}
: 그런 다음, 여기 내 read
기능입니다. 하지만 내가 할 때 : cat myfile
내 open()
함수를 실행합니다. 성공하면 내 read()
함수가 실행되지만 cat 출력은 아무 것도 아닙니다. h
을 출력해야하지만 그렇지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
또한 나는 OSX에서, 동일한 코드 만 open
기능을 실행하지만, read()
는 어떤 문제가 될 수 없었다 결코 것을 발견?