mirror of
https://github.com/golang/go.git
synced 2025-11-11 06:01:06 +00:00
os/signal: add Stop, be careful about SIGHUP
Fixes #4268. Fixes #4491. R=golang-dev, nightlyone, fullung, r CC=golang-dev https://golang.org/cl/7546048
This commit is contained in:
parent
392d5feb8b
commit
cb4428e555
12 changed files with 289 additions and 47 deletions
|
|
@ -12,6 +12,7 @@ import (
|
|||
)
|
||||
|
||||
// In assembly.
|
||||
func signal_disable(uint32)
|
||||
func signal_enable(uint32)
|
||||
func signal_recv() uint32
|
||||
|
||||
|
|
@ -26,13 +27,27 @@ func init() {
|
|||
go loop()
|
||||
}
|
||||
|
||||
func enableSignal(sig os.Signal) {
|
||||
const (
|
||||
numSig = 65 // max across all systems
|
||||
)
|
||||
|
||||
func signum(sig os.Signal) int {
|
||||
switch sig := sig.(type) {
|
||||
case nil:
|
||||
signal_enable(^uint32(0))
|
||||
case syscall.Signal:
|
||||
signal_enable(uint32(sig))
|
||||
i := int(sig)
|
||||
if i < 0 || i >= numSig {
|
||||
return -1
|
||||
}
|
||||
return i
|
||||
default:
|
||||
// Can ignore: this signal (whatever it is) will never come in.
|
||||
return -1
|
||||
}
|
||||
}
|
||||
|
||||
func enableSignal(sig int) {
|
||||
signal_enable(uint32(sig))
|
||||
}
|
||||
|
||||
func disableSignal(sig int) {
|
||||
signal_disable(uint32(sig))
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue