等待非子进程结束



嗨,我正在编写一个简单的代码,该代码将监视进程并在进程崩溃时重新启动进程。我写了一个小示例代码。

这是我的外部进程

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")
}

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

谢谢。

监视进程退出,因为p.Wait()不会阻塞。

从文档中:

在大多数操作系统上,进程必须是当前 进程或将返回错误。

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

最新更新