duanmei4149 2017-07-28 08:14
浏览 86

等待一个非子进程结束

Hi I am working on a simple code that will monitor a process and restart the process in case the process crashes. I have written a small sample code.

This is my external process

package main

import (
    "fmt"
    "time"
)

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

This is the code that monitors it.

package main

import (
    "fmt"
    "os"
)

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

The challenge here is that since the first process is not a child process of the second one, it does not wait and directly exits. Please let me know if anyone has any ideas around this.

Thanks.

  • 写回答

1条回答 默认 最新

  • doudiyu1639 2017-07-28 08:31
    关注

    Monitoring process exits because p.Wait() does not block.

    From the docs:

    On most operating systems, the Process must be a child of the current process or an error will be returned.

    You can perhaps poll the process pool to check if the process still exists.

    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作