1
2
3
4
5 package main
6
7 import "C"
8
9 import (
10 "os"
11 "os/signal"
12 "syscall"
13 "time"
14 )
15
16
17 var sigioChan chan os.Signal
18
19
20
21
22 func CatchSIGIO() {
23 sigioChan = make(chan os.Signal, 1)
24 signal.Notify(sigioChan, syscall.SIGIO)
25 }
26
27
28
29
30 func ResetSIGIO() {
31 signal.Reset(syscall.SIGIO)
32 }
33
34
35
36
37 func AwaitSIGIO() {
38 <-sigioChan
39 }
40
41
42
43
44 func SawSIGIO() bool {
45 timer := time.NewTimer(100 * time.Millisecond)
46 select {
47 case <-sigioChan:
48 timer.Stop()
49 return true
50 case <-timer.C:
51 return false
52 }
53 }
54
55 func main() {
56 }
57
View as plain text