Я хотел бы создать файловую систему FUSE, которая принимает любые операции записи в любой путь внутри файловой системы. Вроде как именованный канал, но в форме каталога.
echo test > bar # consumes "test"
echo test > bar/foo # consumes "test", even though the directory "bar" hasn't been created
echo test > x/y/z/test # consumes "test", even though the directories "x/y/z" haven't been created
Я использую bazil.org / fuse для реализации. Проблема, с которой я сталкиваюсь, заключается в том, что когда приложение хочет записать в foo/bar
в моей файловой системе, оно проверяет, является ли foo
каталогом, а затем bar
файлом. К сожалению, я не могу заранее знать, должен ли foo
быть файлом или каталогом.
Моя Attr
функция выглядит следующим образом:
func (d *Dir) Attr(ctx context.Context, a *fuse.Attr) error {
a.Inode = 1
a.Mode = os.ModeDir | 0755
}
Этот код специфичен длятип узла каталога из-за os.ModeDir
. Я хочу, чтобы это работало для каталогов или файлов.
Есть ли способ добиться того, чего я хочу?