代码之家  ›  专栏  ›  技术社区  ›  Petr

在Go中同步文件系统(syncfs)

  •  4
  • Petr  · 技术社区  · 11 年前

    是否有导出 syncfs Go中的函数?我想同步一个特定的文件系统。

    我找到了 syscall 包,但它只导出 FSync , Fdatasync 和 Sync .

    1 回复  |  直到 11 年前
        1
  •  5
  •   Tim Cooper    11 年前

    syncfs 只是一个系统调用,在Go中很容易触发。

    然而,自从 syscall package 没有 同步 syscall常量,可以使用 golang.org/x/sys/unix 相反,它已经定义了(不是真正必要的,因为syscall常量只是一个数字,但使用该包并没有什么害处)。

    import "golang.org/x/sys/unix"
    
    func syncfs(fd int) error {
        _, _, err := unix.Syscall(unix.SYS_SYNCFS, uintptr(fd), 0, 0)
        if err != 0 {
            return err
        }
        return nil
    }
    

    为了完整起见,以下是仅使用 系统调用 包裹:

    import "syscall"
    
    func syncfs(fd int) error {
        _, _, err := syscall.Syscall(306, uintptr(fd), 0, 0)
        if err != 0 {
            return err
        }
        return nil
    }
    
    推荐文章