我正在尝试实现一个在 Go 中调用中断信号的函数。我知道如何使用 signal.Notify(interruptChannel, os.Interrupt)
拦截来自控制台的中断信号,但是,我找不到实际发送中断信号的方法。我发现你can send a signal to a process , 但我不确定这是否可用于发送顶级中断信号。
有没有一种方法可以从 Go 函数中发送一个中断信号,该信号可以被任何正在监听系统中断信号的东西捕获,或者是 Go 不支持的东西?
最佳答案
假设你正在使用类似这样的东西来捕获中断信号
var stopChan = make(chan os.Signal, 2)
signal.Notify(stopChan, os.Interrupt, syscall.SIGTERM, syscall.SIGINT)
<-stopChan // wait for SIGINT
在代码的任何地方使用 below 将中断信号发送到上面的等待部分。
syscall.Kill(syscall.Getpid(), syscall.SIGINT)
或者如果您在定义 stopChan 变量的同一个包中。从而使其易于访问。你可以做到这一点。
stopChan <- syscall.SIGINT
或者你可以把stopChan定义成一个全局变量(首字母大写也可以),那么你也可以从不同的包中发送中断信号。
Stopchan <- syscall.SIGINT
关于go - 如何发送中断信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40498371/