При реализации readdir
для файловой системы python-fuse
в основном можно выбрать один из следующих двух шаблонов (это только два шаблона, которые я могу найти в примерах файловых систем):
def readdir (self, path, offset):
# ...
# building list_of_directory_entries
# ...
if no_error: return list_of_directory_entries
else: return -error_code
# OR
def readdir (self, path, offset):
# ...
# building generator_of_directory_entries
# ...
if no_error: yield from generator_of_directory_entries
else: raise fuse.FuseError(error_code)
Несмотря на то, что оба шаблона, по-видимому, реализуют одно и то же, между ними есть небольшая разница, когда дело доходит до сообщения об ошибках для слияния: если файловая система была смонтирована с опцией -f
(передний план) (то есть ./examplefs -f mountpoint
) или с Параметр -o debug
и некоторая ошибка возникает в readdir
, последний шаблон выводит трассировку ошибок в stdout / stderr, тогда как первый шаблон ничего не выводит. Это напрямую приводит меня к моему вопросу. Можно ли, используя схему генератора, сообщать предохранителю об ошибках, но таким образом, что fuse / python не выводит трассировку ошибок в stdout / stderr? Я работаю над предохранителем файловую систему и предпочел бы использовать шаблон генератора, но обратные трассировки мешают системе журналирования, которая у меня есть.