go执行windows或Linux下的cmd命令

该代码段实现了一个功能,根据指定的端口号在不同的操作系统(Windows和Linux)上查找对应的进程PID。在Windows上,它使用`netstat`命令,而在Linux上,它使用`lsof`命令。找到PID后,将其转换为整数并返回。
摘要由CSDN通过智能技术生成
//根据端口号查进程pid
func PortToPid(port int) int {
   res := -1
   var outBytes bytes.Buffer
   var cmd *exec.Cmd
   goos := runtime.GOOS
   switch goos {
   case "windows":
      cmdStr := fmt.Sprintf("netstat -ano -p tcp | findstr %d", port)
      cmd = exec.Command("cmd", "/c", cmdStr)
      break
   case "linux":
      cmdStr := fmt.Sprintf("lsof -i:%d", port)
      cmd = exec.Command("bash","-c",cmdStr)
      fmt.Println(cmdStr)
      fmt.Println(cmd)
      break
   }
   cmd.Stdout = &outBytes
   cmd.Run()
   resStr := outBytes.String()
   r := regexp.MustCompile(`\s\d+\s`).FindAllString(resStr, -1)
   if len(r) > 0 {
      pid, err := strconv.Atoi(strings.TrimSpace(r[0]))
      if err != nil {
         res = -1
      } else {
         res = pid
      }
   }
   return res
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值