从 linux 上的 kill 发送信号, kill -s 2 <PID>或kill -s 15 <PID>代码是:package mainimport ( "fmt" "os" "os/signal")func main() { sigs := make(chan os.Signal, 1) done := make(chan bool, 1) signal.Notify(sigs) go func() { sig := <-sigs fmt.Println(sig) }() fmt.Println("waiting") <-done fmt.Println("exiting")}该程序不处理信号,只能CTRL+C运行良好。
1 回答
鸿蒙传说
TA贡献1865条经验 获得超7个赞
func()在收到第一个信号后终止,我认为CTLR+C是您尝试时的第一个信号。当它被包裹在一个循环中时它起作用。
package main
import (
"fmt"
"os"
"os/signal"
)
func main() {
sigs := make(chan os.Signal, 1)
done := make(chan bool, 1)
signal.Notify(sigs)
go func() {
for {
sig := <-sigs
fmt.Println(sig)
}
}()
fmt.Println("waiting")
<-done
fmt.Println("exiting")
}
测试;
$ kill -15 <pid>
$ kill -2 <pid>
$ kill -10 <pid>
$ kill -1 <pid>
$ kill -10 <pid>
$ ./signal
waiting
terminated
interrupt
user defined signal 1
hangup
user defined signal 1
- 1 回答
- 0 关注
- 203 浏览
添加回答
举报
0/150
提交
取消