一尘不染

如何在Go中获取文件的组ID(GID)?

go

os.Stat()返回一个FileInfo对象,该对象的Sys()方法返回一个Interface{}没有方法的。

虽然我能够fmt.Printf()“看到”“ Gid”,但无法以编程方式访问“ Gid”。

如何在此处检索文件的“ Gid”?

file_info, _ := os.Stat(abspath)
file_sys := file_info.Sys()
fmt.Printf("File Sys() is: %+v", file_sys)

印刷品:

File Sys() is: &{Dev:31 Ino:5031364 Nlink:1 Mode:33060 Uid:1616 Gid:31 X__pad0:0 Rdev:0 Size:32 Blksize:32768 Blocks:0 Atim:{Sec:1564005258 Nsec:862700000} Mtim:{Sec:1563993023 Nsec:892256000} Ctim:{Sec:1563993023 Nsec:893251000} X__unused:[0 0 0]}

注意:我不需要可移植的解决方案,它只需要在Linux上工作即可(值得注意的Sys()是,由于众所周知的问题)。


阅读 400

收藏
2020-07-02

共1个答案

一尘不染

reflect模块显示Sys()的return
的数据类型为*syscall.Stat_t,因此这似乎可以将文件的Gid作为字符串获取:

file_info, _ := os.Stat(abspath)
file_sys := file_info.Sys()
file_gid := fmt.Sprint(file_sys.(*syscall.Stat_t).Gid)

如果有更好的方法,请告诉我。

2020-07-02