使用Go确定进程/程序是否已终止

时间:2016-04-02 08:36:41

标签: go

我正在使用Go制作一个小型桌面Web应用程序。此应用程序将作为本地Web服务器运行,并且将在“应用程序”中生成Chrome窗口。模式。 Go程序将在此期间继续运行Web服务器。

我需要关注用户杀死此Chrome窗口的那一刻,以便网络服务器也可以关闭。

我在下面发表评论,显示我需要帮助的地方。

*.sendMessage()

1 个答案:

答案 0 :(得分:2)

您可以使用cmdExec上的Wait()函数等待子进程退出。

package main

import (
    "fmt"
    "os/exec"
)

func main(){
    // Setup the application and arguments.
    cmd := "chrome"
    // URL will be local webserver.
    args := []string{"--user-data-dir=c:\\","--window-size=800,600","--app=http://www.google.com"}

    // Start local webserver here.
    // ...

    // Prepare Chrome in app mode.
    cmdExec := exec.Command(cmd, args...);

    // Start Chrome asynchronously.
    cmdExec.Start()

    // Show to the user on the command line that the application is running.
    fmt.Println("Application in progress! Please close webapp to close webserver!")

    // Keep the webserver running, do web app things...

    // Watch for that process we started earlier. If the user closes that Chrome window
    // Then alert the user that the webserver is now closing down.

    // Should probably handle the error here
    _ = cmdExec.Wait()      

    // And we are done!
    fmt.Println("Application exit!")
}

使用Chromium在本地测试。关闭浏览器窗口后,在Chromium进程存在之前需要几秒钟,然后Wait()返回。