为了账号安全,请及时绑定邮箱和手机立即绑定

在 Go 中获取文件 inode

在 Go 中获取文件 inode

Go
慕神8447489 2021-09-13 15:32:51
如何在 Go 中获取文件 inode?我已经可以这样打印了:file := "/tmp/system.log"fileinfo, _ := os.Stat(file)fmt.Println(fileinfo.Sys())fmt.Println(fileinfo)查看 Go 实现,很明显是在寻找某种stat方法,但我仍然没有找到 Unix 系统的结构定义。如何直接获取inode值?源代码中的哪个文件定义了Sys()?
查看完整描述

3 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

您可以syscall.Stat_t像这样使用类型断言从文件信息中获取底层信息


package main


import (

    "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)

}


查看完整回答
反对 回复 2021-09-13
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

您可以执行以下操作:


file := "/tmp/system.log"

var stat syscall.Stat_t

if err := syscall.Stat(file, &stat); err != nil {

    panic(err)

}

fmt.Println(stat.Ino)

stat.Ino您要查找的 inode在哪里。


查看完整回答
反对 回复 2021-09-13
  • 3 回答
  • 0 关注
  • 561 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信