首页 > 编程开发 > Go语言    日期:2026-06-22 / 浏览

一、获取当前进程时间信息

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
pid := syscall.Getpid()
fmt.Println("mypid:", pid)
// 获取系统所有进程id
pids, _ := process.Pids()
for _, pid := range pids {
    // 根据进程id实例化每个进程
    pn, _ := process.NewProcess(pid)
    pName, _ := pn.Name()
    // 过滤进程名为main.exe的进程信息
    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
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持教程之家。

觉得上面的内容有用吗?快来点个赞吧!

点赞() 我要打赏

温馨提示 : 本站内容来自会员投稿以及互联网,所有源码及教程均为作者总结编辑,请大家在使用过程中提前做好备份,以免发生无法预知的错误,源码类教程请勿直接用于生产环境!

 可能感兴趣的文章

1 2 3 4 5