可以使用 Golang 的 os 和 os/exec 包来实现监视进程名是否存在,如果不存在则关闭自身程序。

以下是示例代码:

package main

import (
    "fmt"
    "os"
    "os/exec"
    "time"
)

func main() {
    // 要监视的进程名
    processName := "chrome.exe"

    // 每秒钟检查一次进程是否存在
    for {
        cmd := exec.Command("tasklist", "/FI", fmt.Sprintf("IMAGENAME eq %s", processName))
        err := cmd.Run()
        if err != nil {
            fmt.Println("Error:", err)
            return
        }

        // 根据命令执行结果,判断进程是否存在
        if cmd.ProcessState.ExitCode() == 0 {
            fmt.Printf("%s is running...\n", processName)
        } else {
            fmt.Printf("%s is not running, exiting...\n", processName)
            time.Sleep(time.Second) // 等待一秒钟,让消息打印出来
            os.Exit(0) // 关闭自身程序
        }

        time.Sleep(time.Second) // 等待一秒钟
    }
}

上述代码中,使用 exec 包调用 tasklist 命令来获取系统中所有进程的列表,然后根据进程名过滤出我们要监视的进程是否存在。如果进程不存在,则调用 os 包的 Exit 函数关闭自身程序。

需要注意的是,由于 tasklist 命令只能在 Windows 系统上使用,因此上述代码只适用于 Windows 平台。如果要在其他平台上使用类似功能,需要使用不同的命令或方法来获取进程列表

golang 监视进程名是否存在 否则关闭自身程序

原文地址: https://www.cveoy.top/t/topic/fhqZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录