golang ---查看进程(Windows)
package main import (
"fmt"
"os"
"os/exec"
"strconv"
"strings"
) func isProcessExist(appName string) (bool, string, int) {
appary := make(map[string]int)
cmd := exec.Command("cmd", "/C", "tasklist")
output, _ := cmd.Output()
//fmt.Printf("fields: %v\n", output)
n := strings.Index(string(output), "System")
if n == -1 {
fmt.Println("no find")
os.Exit(1)
}
data := string(output)[n:]
fields := strings.Fields(data)
for k, v := range fields {
if v == appName {
appary[appName], _ = strconv.Atoi(fields[k+1]) return true, appName, appary[appName]
}
} return false, appName, -1
} func main() { fmt.Println(isProcessExist("chrome.exe")) }
输出:
true chrome.exe 7316
查找进程并删除进程
package main import (
"fmt"
"os"
"os/exec"
"strconv"
"strings"
) func isProcessExist(appName string) (bool, string, int) {
appary := make(map[string]int)
cmd := exec.Command("cmd", "/C", "tasklist")
output, _ := cmd.Output()
//fmt.Printf("fields: %v\n", output)
n := strings.Index(string(output), "System")
if n == -1 {
fmt.Println("no find")
os.Exit(1)
}
data := string(output)[n:]
fields := strings.Fields(data)
for k, v := range fields {
if v == appName {
appary[appName], _ = strconv.Atoi(fields[k+1]) return true, appName, appary[appName]
}
} return false, appName, -1
} func main() {
apName := "notepad++.exe"
fmt.Println(isProcessExist(apName))
c := exec.Command("cmd.exe", "/C", "taskkill", "/IM", apName)
err := c.Start()
if err != nil {
fmt.Println(err)
}
c.Wait() }
package main import (
"fmt"
"log"
"os/exec"
) func main() {
var inputStr string
for {
fmt.Println("---------------------------------------------------")
fmt.Print("1->退出 ")
fmt.Print("2->显示进程 ")
fmt.Print("3->结束进程 ")
fmt.Println("4->显示全部进程")
fmt.Println("---------------------------------------------------")
fmt.Scanln(&inputStr)
if inputStr == "1" {
fmt.Println("已退出...")
break
} else if inputStr == "2" {
fmt.Print("请输入进程名称:")
var processName string
fmt.Scanln(&processName)
if len(processName) == 0 {
fmt.Println("进程名称不可为空!")
} else {
text := "imagename eq " + processName + "*"
listProcess(text)
}
} else if inputStr == "3" {
fmt.Print("请输入要结束的进程名称:")
var processName string
fmt.Scanln(&processName)
if len(processName) == 0 {
fmt.Println("进程名称不可为空!")
} else {
text := "imagename eq " + processName + "*"
killProcess(text)
}
} else if inputStr == "4" {
listAllProcess()
} else {
fmt.Println("请输入正确的参数!")
}
}
fmt.Scanln(&inputStr)
} func listProcess(text string) {
fmt.Println(text)
cmd := exec.Command("tasklist", "/fi", text)
out, err := cmd.CombinedOutput()
if err != nil {
log.Fatal(err)
}
fmt.Println(string(out))
}
func listAllProcess() {
cmd := exec.Command("tasklist")
out, err := cmd.CombinedOutput()
if err != nil {
log.Fatal(err)
}
fmt.Println(string(out))
} func killProcess(text string) {
cmd := exec.Command("taskkill", "/f", "/t", "/fi", text)
out, err := cmd.CombinedOutput()
if err != nil {
log.Fatal(err)
}
fmt.Println(string(out))
}
有关tasklist相关命令请参考:https://www.cnblogs.com/saryli/p/11652789.html
golang ---查看进程(Windows)的更多相关文章
- Windows下查看进程及结束进程命令[转]
Windows下查看进程及结束进程命令 1)查看占用8080端口的进程号 >netstat –aon | findstr “8080” 结果:TCP 0.0.0.0:8080 ...
- Windows查看指定端口是否占用和查看进程
Winodows上查看指定端口号的使用情况和占用进程以及终止所占用端口进程进程用到.下面主要描述如何操作. 1.查看所有端口占用情况 C:\Users\Administrator>netstat ...
- windows查看进程线程的命令pslist
pslist是用命令行查看线程:ProcessExplorer是图形化的查看线程,都在附件中. 1.查看进程 tasklist or pslist -t Name ...
- windows下查看进程及结束进程命令
windows下查看进程及结束进程命令 1)查看占用8080端口的进程号 >netstat –aon | findstr “8080” 结果:TCP 0.0.0.0:8080 ...
- windows查看进程
由端口到进程: 直接查看进程: 查看本机连接端口: 杀进程: (eg:kill httpd) tskill 1596
- Windows netstat 查看端口、进程占用 查看进程路径
1.查看端口.进程占用 运行->进入cmd->netstat -ano 2.查看进程路径 运行->WMIC->process 3.查看进程PID和占用内存情况 运行->进 ...
- supervisor运行golang守护进程
最近在鼓捣golang守护进程的实现,无意发现了supervisor这个有意思的东西.supervisor是一个unix的系统进程管理软件,可以用它来管理apache.nginx等服务,若服务挂了可以 ...
- Linux查看进程线程个数
1.根据进程号进行查询: # pstree -p 进程号 # top -Hp 进程号 2.根据进程名字进行查询: # pstree -p `ps -e | grep server | awk '{pr ...
- Linux 查看进程消耗内存情况总结
在Linux中,有很多命令或工具查看内存使用情况,今天我们来看看如何查看进程消耗.占用的内存情况,Linux的内存管理和相关概念要比Windows复杂一些.在此之前,我们需要了解一下Linux系统下面 ...
随机推荐
- webrtc (6) 在Webrtc中集成VideoToolbox
来源:http://blog.csdn.net/wangruihit/article/details/46550853 VideoToolbox是iOS平台在iOS8之后开放的一个Framework, ...
- springboot搭建dubbo+zookeeper简单案例
背景:只是自己使用单机版zookeeper搭建dubbo的一个学习案例,记录成功的过程 1.搭建zookeeper坏境 使用docker来构建环境 1.1 拉取镜像:docker pull zooke ...
- Linux下BLAST+的本地化(BLAST 2.2.29+)
链接:http://blog.sciencenet.cn/home.php?mod=space&uid=830496&do=blog&quickforward=1&id ...
- Linux操作系统安全-使用gpg实现对称加密
Linux操作系统安全-使用gpg实现对称加密 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.gpg工具包概述 1>.什么是gpg GnuPG是GNU负责安全通信和数据存 ...
- am instrument 命令详解运行多个用例
1 Instrument是什么? instrument为am命令的一个子命令.用于启动一个Instrumentation测试.首先连接手机或者模拟器,通过adb shell命令,进入shell层进行操 ...
- linux cpu信息查看
转自:https://www.cnblogs.com/emanlee/p/3587571.html # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X ...
- 10-cmake语法-CMakeParseArguments
include(CMakeParseArguments) 是为了使用 cmake_parse_arguments(),看样子是用来解析输入参数的. 给出参考: https://cmake.org/pi ...
- 07-cmake语法-MATCHES
如果给定的字串或变量值域给定的正则表达式匹配的话,表达式返回真. IF (CMAKE_SYSTEM_NAME MATCHES "Linux") MESSAGE(STATUS &qu ...
- USACO Poker Hands
洛谷 P3078 [USACO13MAR]扑克牌型Poker Hands 题目传送门 JDOJ 2359: USACO 2013 Mar Silver 1.Poker Hands JDOJ传送门 题目 ...
- #51nod上topcoder练习记
好久没刷51nod了,又听说topcoder有很多好题.那么就来51nod上刷吧.(那个客户端搞得有点烦(看不懂)) [1366 贫富差距] 当图不连通的时候,答案为无穷大. 当图连通时,两个点之间的 ...