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

我找到了 syscall 包,但它只导出 FSyncFdatasyncSync

最佳答案

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

但是,由于 syscall package 没有 syncfs 系统调用常量,您可以使用 golang.org/x/sys/unix 代替,它定义了它(不是真正必要的,因为系统调用常量只是一个数字,但使用该包并没有什么坏处)。

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
}

为了完整起见,这里是仅使用 syscall 包的解决方案:
import "syscall"

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

关于go - 在 Go 中同步文件系统 (syncfs),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31697163/

10-16 12:27