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