Oddechový článek – jak funguje nástroj du

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áší.

,