去wait4功能

时间:2015-08-11 12:44:31

标签: go wait system-calls

我想测试wait4函数,但我并不熟悉子进程等等,但是我需要保持它的工作状态,在此期间发送一些信号并看到反应。你能给我一个在Go中使用wait4的例子吗?

1 个答案:

答案 0 :(得分:2)

在Linux上不推荐使用wait4,正确的方法是使用exec.Command并调用.Wait()

信号示例:

func bgProcess(app string) (chan error, *os.Process, error) {
    cmd := exec.Command(app)
    ch := make(chan error, 1)
    if err := cmd.Start(); err != nil {
        return nil, nil, err
    }
    go func() {
        ch <- cmd.Wait()
    }()
    return ch, cmd.Process, nil
}
func main() {
    ch, proc, err := bgProcess("/usr/bin/cat")
    if err != nil {
        log.Fatal(err)
    }
    log.Println("Signal(os.Kill):", proc.Signal(os.Kill))
    log.Println("cat returned:", <-ch)

}