staros/os_darwin.go

70 lines
1.2 KiB
Go
Raw Permalink Normal View History

//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
}