staros/os_darwin.go
starainrt d93a851d1b
feat: 完善 staros 系统能力并更新 wincmd 发布版依赖
- 重构 sysconf 为文档模型 INI Parser 与 Config Framework
- 强化 hosts 解析、插入校验、写回与异常输入处理
- 完善 StarCmd 生命周期、等待 API、流式输出与 IO 重定向
- 扩展跨平台文件时间、文件锁、内存、进程与网络能力
- 将 Windows 进程适配更新到 b612.me/wincmd v0.1.0
- 移除本地 wincmd/win32api replace,改用发布版依赖
- 将最低 Go 版本提升到 1.18
- 补充 hosts、sysconf、FileLock、StarCmd 与平台适配回归测试
2026-06-09 18:10:19 +08:00

70 lines
1.2 KiB
Go

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