在 Go 中获取文件 inode

如何在 Go 中获取文件 inode?


我已经可以这样打印了:


file := "/tmp/system.log"

fileinfo, _ := os.Stat(file)

fmt.Println(fileinfo.Sys())

fmt.Println(fileinfo)

查看 Go 实现,很明显是在寻找某种stat方法,但我仍然没有找到 Unix 系统的结构定义。


如何直接获取inode值?


源代码中的哪个文件定义了Sys()?


慕神8447489
浏览 574回答 3
3回答

万千封印

您可以syscall.Stat_t像这样使用类型断言从文件信息中获取底层信息package mainimport (    "fmt"    "os"    "syscall")func main() {    file := "/etc/passwd"    fileinfo, _ := os.Stat(file)    fmt.Printf("fileinfo.Sys() = %#v\n", fileinfo.Sys())    fmt.Printf("fileinfo = %#v\n", fileinfo)    stat, ok := fileinfo.Sys().(*syscall.Stat_t)    if !ok {        fmt.Printf("Not a syscall.Stat_t")        return    }    fmt.Printf("stat = %#v\n", stat)    fmt.Printf("stat.Ino = %#v\n", stat.Ino)}

鸿蒙传说

您可以执行以下操作:file := "/tmp/system.log"var stat syscall.Stat_tif err := syscall.Stat(file, &stat); err != nil {    panic(err)}fmt.Println(stat.Ino)stat.Ino您要查找的 inode在哪里。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go