//go:build darwin // +build darwin package staros import ( "os/user" "strconv" "syscall" "time" ) // StartTime is not implemented on Darwin yet. func StartTime() time.Time { return time.Time{} } // IsRoot 当前是否是管理员用户 func IsRoot() bool { uid, err := user.Current() return err == nil && uid.Uid == "0" } func Whoami() (uid, gid int, uname, gname, home string, err error) { var me *user.User var group *user.Group me, err = user.Current() if err != nil { return } uid, _ = strconv.Atoi(me.Uid) gid, _ = strconv.Atoi(me.Gid) home = me.HomeDir uname = me.Username group, err = user.LookupGroupId(me.Gid) if err != nil { return } gname = group.Name return } func CpuUsageByPid(pid int, sleep time.Duration) float64 { return 0 } func CpuUsage(sleep time.Duration) float64 { return 0 } func DiskUsage(path string) (disk DiskStatus) { disk, _ = DiskUsageE(path) return } func DiskUsageE(path string) (disk DiskStatus, err error) { if path == "" { path = "." } fs := syscall.Statfs_t{} if err = syscall.Statfs(path, &fs); err != nil { return } disk.All = fs.Blocks * uint64(fs.Bsize) disk.Free = fs.Bfree * uint64(fs.Bsize) disk.Available = fs.Bavail * uint64(fs.Bsize) disk.Used = disk.All - disk.Free return }