Dnes nemám co dělat, tak jsem se zamyslel nad tím, jak vlastně funguje unixový příkaz du (disk usage), nebo df (disk free). Je za tím jedno volání jádra. Pojďme se podívat, jako si tyto nástroje napsat v jazyce Golang.
Je potřeba volat jádro, takže potřebujeme naimportovat syscall:
package main
import "syscall"
type DiskUsage struct {
stat *syscall.Statfs_t
}
A zavoláme jádro:
func main () {
var stat syscall.Statfs_t
syscall.Statfs(volumePath, &stat)
fmt.Println (&DiskUsage{&stat})
}
Ve standardní knihovně v Golangu je definovaná takto:
type Statfs_t struct {
Type int64
Bsize int64
Blocks uint64
Bfree uint64
Bavail uint64
Files uint64
Ffree uint64
Fsid Fsid
Namelen int64
Frsize int64
Flags int64
Spare [4]int64
}
Z této struktury je již jasné, jaké informace nám toto volání jádra přináší.