信号捕获处理
136字小于1分钟
2025-02-04
package main
import (
"fmt"
"os"
"os/signal"
"syscall"
)
func main() {
// 打印当前进程的ID
fmt.Printf("当前进程ID: %d\n", syscall.Getpid())
// 创建一个信号通道
sigChan := make(chan os.Signal, 1)
// 监听INT信号
signal.Notify(sigChan, syscall.SIGINT)
// 启动一个goroutine,用于接收信号并打印信号信息
go func() {
for {
sig := <-sigChan
fmt.Printf("接收到信号: %v\n", sig)
if sig == syscall.SIGINT {
fmt.Println("Welcome back!")
// 终止进程
os.Exit(0)
}
}
}()
// 无限循环,模拟程序正在运行
for {
// 这里可以添加其他逻辑
}
}