15

同步手册页说:

sync() 导致对文件元数据和数据的所有缓冲修改写入底层文件系统。

Python 是否有要求执行此操作?

PS不是fsync,我明白了。

4

3 回答 3

17

Python 3.3 有 os.sync,请参阅文档消息来源证实这是同一件事。

对于 Python 2,您可以对系统进行外部调用

from subprocess import check_call
check_call(['sync'])
于 2013-04-13T01:52:44.313 回答
14

如前所述,Python 3.3 在 Python 2.x 上有调用,因为它是一个简单的系统调用,不需要来回传递数据,您可以使用 ctypes 进行调用:

>>> import ctypes
>>> libc = ctypes.CDLL("libc.so.6")
>>> libc.sync()
0
于 2013-04-13T02:52:08.467 回答
7

结合这两个 答案,我在模块顶部使用以下内容:

if hasattr(os, 'sync'):
    sync = os.sync
else:
    import ctypes
    libc = ctypes.CDLL("libc.so.6")
    def sync():
        libc.sync()
于 2014-10-14T17:11:37.147 回答