- 重构 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 与平台适配回归测试
70 lines
1.2 KiB
Go
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
|
|
}
|