为 plan9 定义的 Stat_t 在哪里?
Where is Stat_t defined for plan9?
在 plan9
syscall
的特定 Go 代码中,没有像其他 GOOS
那样的 Stat_t
。 Stat_t
或其等效定义在哪里?
TL;DR:是 *syscall.Dir
类型。继续阅读以了解详细信息。
Plan9 上 os.Stat
的来源是 here. It calls dirstat
, which is defined here. It feeds the return value of dirstat
into fileInfoFromStat
, which is defined in the same file here。
在路径的情况下(与 *File
对象相反),dirstat
只是调用 syscall.Stat
,这基本上只是一个stat
周围的薄包装纸。 syscall.Stat
期望字节缓冲区能够写入。这个缓冲区经过一些处理(详见 dirstat
),然后送入 syscall.UnmarshalDir
,这就是神奇发生的地方。文档指出它来自缓冲区 "decodes a single 9P stat message" 和 returns 一个 *syscall.Dir
.
dirstat
然后将此 *syscall.Dir
传递给 fileInfoFromStat
,后者将其处理为 FileInfo
。就是这个*syscall.Dir
值是通过FileInfo
对象的Sys()
方法得到的。
在 plan9
syscall
的特定 Go 代码中,没有像其他 GOOS
那样的 Stat_t
。 Stat_t
或其等效定义在哪里?
TL;DR:是 *syscall.Dir
类型。继续阅读以了解详细信息。
Plan9 上 os.Stat
的来源是 here. It calls dirstat
, which is defined here. It feeds the return value of dirstat
into fileInfoFromStat
, which is defined in the same file here。
在路径的情况下(与 *File
对象相反),dirstat
只是调用 syscall.Stat
,这基本上只是一个stat
周围的薄包装纸。 syscall.Stat
期望字节缓冲区能够写入。这个缓冲区经过一些处理(详见 dirstat
),然后送入 syscall.UnmarshalDir
,这就是神奇发生的地方。文档指出它来自缓冲区 "decodes a single 9P stat message" 和 returns 一个 *syscall.Dir
.
dirstat
然后将此 *syscall.Dir
传递给 fileInfoFromStat
,后者将其处理为 FileInfo
。就是这个*syscall.Dir
值是通过FileInfo
对象的Sys()
方法得到的。