douyu5775 2016-02-22 03:07
浏览 76
已采纳

为plan9定义Stat_t在哪里?

In the plan9 specific Go code for syscall, there is no Stat_t like with other GOOS. Where is Stat_t, or its equivalent defined?

  • 写回答

1条回答 默认 最新

  • dpn517111 2016-02-22 09:24
    关注

    TL;DR: It's the *syscall.Dir type. Read on for details.

    The source for os.Stat on Plan9 is 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.

    In the case of paths (as opposed to *File objects), dirstat just calls syscall.Stat, which is basically just a thin wrapper around stat. syscall.Stat expects a byte buffer to be able to write into. This buffer is processed a bit (see dirstat for details), and then fed into syscall.UnmarshalDir, which is where the magic happens. The documentation states that it "decodes a single 9P stat message" from a buffer and returns a *syscall.Dir.

    dirstat then passes this *syscall.Dir to fileInfoFromStat, which is what processes it into a FileInfo. It's this *syscall.Dir value that is obtained through the Sys() method on the FileInfo object.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?