初心者のGo言語 -38- <Ignore,Ignored,Notify>
こんにちは、kurumi-bioです。
第1回目のsignalパッケージ(標準ライブラリー)の学習です。
環境
- Windows
OSバージョン:Windows11 Home 22H2
Go言語のバージョン:go version go1.20.3 windows/amd64 - Linux
OSバージョン:openSUSE Leap 15.4
Go言語のバージョン:go version go1.20.3 linux/amd64
Ignore関数
func Ignore(sig ...os.Signal)
Ignored関数
func Ignored(sig os.Signal) bool
◆テストコード
package main import ( "fmt" "os" "os/signal" "syscall" "time" ) func main() { fmt.Printf("pid=[%d]\n", os.Getpid()) signal.Ignore(syscall.SIGINT, syscall.SIGTERM) fmt.Println("Ignored Start") fmt.Printf("syscall.SIGKILL=[%v]\n", signal.Ignored(syscall.SIGKILL)) fmt.Printf("syscall.SIGINT=[%v]\n", signal.Ignored(syscall.SIGINT)) fmt.Printf("syscall.SIGTERM=[%v]\n", signal.Ignored(syscall.SIGTERM)) time.Sleep(10 * time.Second) fmt.Println("end") }
◆実行結果(Windows)
◆実行結果(Linux)
Notify関数
func Notify(c chan<- os.Signal, sig ...os.Signal)
◆テストコード
package main import ( "fmt" "os" "os/signal" "syscall" ) func main() { signal.Ignore(syscall.SIGINT, syscall.SIGTERM) fmt.Printf("pid=[%d]\n", os.Getpid()) for { c := make(chan os.Signal, 1) signal.Notify(c) s := <-c fmt.Printf("signal=[%s]\n", s) } }
◆実行結果(Windows)
◆実行結果(Linux)
最後までご覧いただきありがとうございます