去wait4函数

标签 go wait system-calls

我想测试 wait4 函数,但我不太熟悉子进程等,但我需要让它继续工作,在此期间向它发送一些信号并查看 react 。你能给我一个在 Go 中使用 wait4 的小例子吗?

最佳答案

wait4 在 Linux 上已被弃用,正确的方法是使用 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)

}

关于去wait4函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31942171/

相关文章:

unit-testing - 如何编写需要大量测试用例的 go 测试

arrays - Go 或 Rust 中的数组数组?

java - 在 Java 中,如何等待一个线程执行某些操作,然后再继续执行另一个线程?

c - 如何等待非子进程退出

linux - splice() 用于匿名内存——有什么性能优势吗?

Go - 延迟函数的不一致评估

go - 我如何在 golang 中使用本地包?

javascript - 如何使用 Watir-Webdriver 不等待某些东西

c - 内存映射文件无法在不取消映射的情况下关闭,因为它仍然被引用

unix - 在 unix 环境中拦截系统调用的可能方法有哪些?