等待非子进程结束

时间:2017-07-28 08:14:56

标签: go process watchdog

您好我正在研究一个简单的代码,它将监视进程并在进程崩溃时重新启动进程。我写了一个小样本代码。

这是我的外部流程

package main

import (
    "fmt"
    "time"
)

func main() {
    for {
        time.Sleep(1000 * time.Millisecond)
        fmt.Println("hello")
    }
}

这是监控它的代码。

package main

import (
    "fmt"
    "os"
)

func main() {
    p, e := os.FindProcess(<processid>)
    fmt.Println(e)
    fmt.Println(p.Wait())
    fmt.Println("done")
}

这里的挑战是,由于第一个进程不是第二个进程的子进程,因此它不会等待并直接退出。 如果有人对此有任何想法,请告诉我。

感谢。

1 个答案:

答案 0 :(得分:0)

监视进程退出,因为p.Wait()没有阻止。

来自docs

  

在大多数操作系统上,进程必须是当前的子进程   过程或错误将被退回。

您可以轮询流程池以检查流程是否仍然存在。