gpt4 book ai didi

unix - 在 Go 中获取文件 inode

转载 作者:IT王子 更新时间:2023-10-29 01:06:32 25 4
gpt4 key购买 nike

如何在 Go 中获取文件 inode?

我已经可以这样打印了:

file := "/tmp/system.log"
fileinfo, _ := os.Stat(file)
fmt.Println(fileinfo.Sys())
fmt.Println(fileinfo)

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

如何直接获取inode值?

源代码中的哪些文件定义了Sys()的结构?

最佳答案

您可以像这样使用类型断言从文件信息中获取底层的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)
}

关于unix - 在 Go 中获取文件 inode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28339240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com