在 Go 中同步文件系统 (syncfs)
Synchronizing a file system (syncfs) in Go
Go中有导出syncfs
函数的包吗?我想同步一个特定的文件系统。
我找到了 syscall 包,但它只导出 FSync
、Fdatasync
和 Sync
。
syncfs
只是一个系统调用,在Go中很容易触发
但是,由于 syscall
package does not have the syncfs
syscall constant, you can use 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中有导出syncfs
函数的包吗?我想同步一个特定的文件系统。
我找到了 syscall 包,但它只导出 FSync
、Fdatasync
和 Sync
。
syncfs
只是一个系统调用,在Go中很容易触发
但是,由于 syscall
package does not have the syncfs
syscall constant, you can use 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
}