Python 如何防止缓存FUSE文件?

Python 如何防止缓存FUSE文件?,python,fuse,Python,Fuse,如何防止操作系统(或任何正在执行此操作的操作系统)在FUSE文件系统中缓存文件的大小/内容 我制作了一个小的复制示例,它使用单个文件创建了一个文件系统/foo。/foo的内容每5秒更改一次。这是我的FUSE文件系统(sample.py): 如果我cat每秒打印一次内容,持续10秒,我希望看到打印出2或3个不同的内容,但我看到相同的内容10次: $ for i in $(seq 1 10); do > cat /tmp/dump/foo > sleep 1 > done

如何防止操作系统(或任何正在执行此操作的操作系统)在FUSE文件系统中缓存文件的大小/内容

我制作了一个小的复制示例,它使用单个文件创建了一个文件系统
/foo
/foo
的内容每5秒更改一次。这是我的FUSE文件系统(
sample.py
):

如果我
cat
每秒打印一次内容,持续10秒,我希望看到打印出2或3个不同的内容,但我看到相同的内容10次:

$ for i in $(seq 1 10); do
>   cat /tmp/dump/foo
>   sleep 1
> done
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
如果我在提交文件之前
ls-al
,我会得到我所期望的:

$ for i in $(seq 1 10); do
>   ls -al /tmp/dump >> /dev/null
>   cat /tmp/dump/foo
>   sleep 1
> done
01234567
01234567
01234567
01234567
012345678
012345678
012345678
012345678
012345678
0123456789
在运行第一个shell命令时,如何获得第二个shell命令的输出?

只需打开这些行即可

st = fuse.FuseFileInfo()
accmode = os.O_RDONLY | os.O_WRONLY | os.O_RDWR
if (flags & accmode) != os.O_RDONLY:
  return -errno.EACCES
setattr(st,'direct_io',True)
#setattr(st,keep,False)
return st

如果不需要缓存文件,请将direct\u io切换为True。

这看起来像是将
direct\u io=True
传递到
保险丝(
调用将阻止缓存。它似乎可以普遍阻止缓存。能够逐个文件阻止缓存会很好。
st = fuse.FuseFileInfo()
accmode = os.O_RDONLY | os.O_WRONLY | os.O_RDWR
if (flags & accmode) != os.O_RDONLY:
  return -errno.EACCES
setattr(st,'direct_io',True)
#setattr(st,keep,False)
return st