一、获取当前进程时间信息
import (
"syscall"
"fmt"
)
var (
creationTime syscall.Filetime
exitTime syscall.Filetime
kernelTime syscall.Filetime
userTime syscall.Filetime
)
h, err := syscall.GetCurrentProcess()
if err != nil {
fmt.Println(err)
return
}
err = syscall.GetProcessTimes(h, &creationTime, &exitTime, &kernelTime, &userTime)
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("CreationTime: %v\nExitTime: %v\nKernelTime: %v\nUserTime: %v\n", creationTime.Nanoseconds(), exitTime.Nanoseconds(), kernelTime.Nanoseconds(), userTime.Nanoseconds())
二、获取进程id
import (
"fmt"
"strings"
"syscall"
"time"
"github.com/shirou/gopsutil/process"
)
pid := syscall.Getpid()
fmt.Println("mypid:", pid)
pids, _ := process.Pids()
for _, pid := range pids {
pn, _ := process.NewProcess(pid)
pName, _ := pn.Name()
if 0 != strings.Compare(pName, "main.exe") {
continue
}
_, _ = pn.Cwd()
h, err := syscall.OpenProcess(syscall.STANDARD_RIGHTS_REQUIRED|syscall.SYNCHRONIZE|0xfff, false, uint32(pid))
if err != nil {
fmt.Println(err)
return
}
defer syscall.CloseHandle(h)
err = syscall.GetProcessTimes(h, &creationTime, &exitTime, &kernelTime, &userTime)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("pid:", pid, ",milliseconds:", creationTime.Nanoseconds()/1000000)
}
_, err = process.Processes()
if err != nil {
fmt.Println(err.Error())
return
}