加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

unix – 在Go中获取文件inode

发布时间:2020-12-15 18:26:20 所属栏目:安全 来源:网络整理
导读:如何在Go中获取文件inode? 我已经可以这样打印了: file := "/tmp/system.log"fileinfo,_ := os.Stat(file)fmt.Println(fileinfo.Sys())fmt.Println(fileinfo) 看看Go实现,显然正在寻找一些stat方法,但我仍然无法找到Unix系统的结构定义. 如何直接获取inode
如何在Go中获取文件inode?

我已经可以这样打印了:

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

看看Go实现,显然正在寻找一些stat方法,但我仍然无法找到Unix系统的结构定义.

如何直接获取inode值?

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

您可以使用类型断言从fileinfo获取底层的syscall.Stat_t
package main

import (
    "fmt"
    "os"
    "syscall"
)

func main() {
    file := "/etc/passwd"
    fileinfo,_ := os.Stat(file)
    fmt.Printf("fileinfo.Sys() = %#vn",fileinfo.Sys())
    fmt.Printf("fileinfo = %#vn",fileinfo)
    stat,ok := fileinfo.Sys().(*syscall.Stat_t)
    if !ok {
        fmt.Printf("Not a syscall.Stat_t")
        return
    }
    fmt.Printf("stat = %#vn",stat)
    fmt.Printf("stat.Ino = %#vn",stat.Ino)
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读