действие предохранителя на верхушке - PullRequest
3 голосов
/ 30 апреля 2011

Я написал несколько простых файловых систем с Python-fuse, но теперь я хочу сделать что-то, чего не могу найти ни в pydoc, ни в найденных мной примерах сценариев: когда файловая система отключена с помощью fusermount -u, я хочу перехватить это действие, выполнить размонтирование и затем rmdir каталог монтирования, созданный сценарием инициализации моей программы. Если это вообще возможно, каково волшебное заклинание, чтобы заманить в ловушку первобытное действие?

Я вижу, как это может легко превратиться в бесконечный цикл, но я надеюсь, что смогу выяснить, как отключить размонтированную ловушку при первом попадании. <ч /> Обновление: я нашел destroy в http://omake.metaprl.org/prerelease/omake-dll-fuse.html#htoc582 и добавил метод, но он не вызывается.

Ответы [ 2 ]

0 голосов
/ 22 сентября 2012

Другое решение, хотя оно и не является специфическим и не протестировано в Python, - это предотвращение «демонизации» FUSE с помощью переключателя -f.

В этом случае метод fuse_main будет блокироваться до тех пор, пока файловая система не будет размонтирована, и впоследствии вы вернете элемент управления.

Если вам нужно поведение демона, вы можете переопределить его самостоятельно перед установкой.

0 голосов
/ 30 апреля 2011

нашел это! это fsdestroy () в Python-fuse. найти его по:

jcomeau@intrepid:/usr/src/google-desktop/api$ cat /usr/lib/python2.6/dist-packages/fuseparts/* | strings | grep destroy
fsdestroy

То, что я использовал, было:

def fsdestroy(self, data = None):
  syslog.syslog(syslog.LOG_INFO, 'destroy %s: %s' % (self.mountpoint, data))
  os.rmdir(self.mountpoint)

Не знаю, нужен ли параметр данных или нет, но это не больно. И, видимо, он называется после после огромного, поэтому мне не пришлось беспокоиться об этом.

...