Browse Source

执行前kill

liuyuqi-dellpc 1 year ago
parent
commit
634531c9bd
2 changed files with 49 additions and 1 deletions
  1. 1 1
      main.go
  2. 48 0
      util/web.go

+ 1 - 1
main.go

@@ -31,7 +31,7 @@ func main() {
 	// 		port++
 	// 	}
 	// }
-
+	// util.KillProcessByName("fs-go.exe")  // 执行会把自己给kill掉
 	go util.OpenBrowser("http://localhost:" + strconv.Itoa(port)) // Open browser in a goroutine
 
 	err := http.ListenAndServe(":"+fmt.Sprintf("%d", port), http.HandlerFunc(handler))

+ 48 - 0
util/web.go

@@ -4,8 +4,56 @@ import (
 	"fmt"
 	"os/exec"
 	"runtime"
+	"log"
+	"strings"
+	"strconv"
 )
 
+func KillProcessByName(processName string) error  {
+	var err error
+	switch runtime.GOOS {
+	case "linux", "darwin":
+		killStatement := fmt.Sprintf(`kill -9 $(ps -ef | grep %s | grep -v grep | awk '{print $2}')`, processName)
+		err = exec.Command("sh", "-c", killStatement).Start()
+	case "windows":
+		killStatement := fmt.Sprintf(`taskkill /F /IM %s`, processName)
+		err = exec.Command("cmd", "/C", killStatement).Start()
+	default:
+		err = fmt.Errorf("unsupported platform")
+	}
+	return err	
+}
+
+func KillProcess(port int) error {
+	var err error 
+	switch runtime.GOOS {
+	case "linux", "darwin":
+		killStatement := fmt.Sprintf(`kill -9 $(lsof -i:%d -t)`, port)
+		err = exec.Command("sh", "-c", killStatement).Start()
+	case "windows":
+        killStatement := fmt.Sprintf(`netstat -ano | findstr %d`, port)
+        output, err := exec.Command("cmd", "/C", killStatement).Output()
+        if err != nil {
+            log.Fatal(err)
+        }
+
+        pidString := strings.TrimSpace(string(output))
+        fields := strings.Fields(pidString)
+        pid, err := strconv.Atoi(fields[len(fields)-1])
+        if err != nil {
+            log.Fatal(err)
+        }
+        killCommand := fmt.Sprintf("taskkill /F /PID %d", pid)
+        err = exec.Command("cmd", "/C", killCommand).Start()
+        if err != nil {
+            log.Fatal(err)
+        }
+	default:
+		err = fmt.Errorf("unsupported platform")
+	}
+	return err
+}
+
 func OpenBrowser(url string) error {
 	var err error