|
|
|
// +build windows
|
|
|
|
|
|
|
|
package staros
|
|
|
|
|
|
|
|
import (
|
|
|
|
"errors"
|
|
|
|
"fmt"
|
|
|
|
"os/exec"
|
|
|
|
"strconv"
|
|
|
|
|
|
|
|
"b612.me/wincmd"
|
|
|
|
)
|
|
|
|
|
|
|
|
// FindProcessByName 通过进程名来查询应用信息
|
|
|
|
func FindProcessByName(pname string) (data []Process, err error) {
|
|
|
|
var lists []map[string]string
|
|
|
|
lists, err = wincmd.GetRunningProcess()
|
|
|
|
if err != nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
for _, v := range lists {
|
|
|
|
if v["name"] == pname {
|
|
|
|
var tmp Process
|
|
|
|
tmp.Name = pname
|
|
|
|
tmp.Pid, _ = strconv.ParseInt(v["pid"], 10, 64)
|
|
|
|
tmp.PPid, _ = strconv.ParseInt(v["ppid"], 10, 64)
|
|
|
|
data = append(data, tmp)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// FindProcessByPid 通过pid来查询应用信息
|
|
|
|
func FindProcessByPid(pid int64) (data Process, err error) {
|
|
|
|
var lists []map[string]string
|
|
|
|
lists, err = wincmd.GetRunningProcess()
|
|
|
|
if err != nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
for _, v := range lists {
|
|
|
|
if v["pid"] == fmt.Sprint(pid) {
|
|
|
|
data.Name = v["name"]
|
|
|
|
data.Pid = pid
|
|
|
|
data.PPid, _ = strconv.ParseInt(v["ppid"], 10, 64)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
err = errors.New("Not Found")
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
func Daemon(path string, args ...string) (int, error) {
|
|
|
|
cmd := exec.Command(path, args...)
|
|
|
|
if err := cmd.Start(); err != nil {
|
|
|
|
return -1, err
|
|
|
|
}
|
|
|
|
pid := cmd.Process.Pid
|
|
|
|
cmd.Process.Release()
|
|
|
|
return pid, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (starcli *StarCmd) SetRunUser(uid, gid uint32) {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
func (starcli *StarCmd) Release() error {
|
|
|
|
if err := starcli.CMD.Start(); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
starcli.CMD.Process.Release()
|
|
|
|
return nil
|
|
|
|
}
|