专业的编程技术博客社区

网站首页 > 博客文章 正文

java ,go,c++ 监听kill信号(java监听binlog)

baijin 2024-08-14 12:38:15 博客文章 5 ℃ 0 评论

在某些项目中,当进程被kill杀死时候,运行程序需要处理一下逻辑,比如:用户信息回写到数据库,记录一些累计变化量到文件里等。

go代码:

#创建一个管道,用于接受监听的信息
signalChan := make(chan os.Signal, 1);
#启动一个协程用于监听到消息后的逻辑
go func() {
   ss:=<-signalChan;
   fmt.Println("   监听到了退出   ====>   ",ss.String());
   os.Exit(0);
}();
#监听SIGINT ,SIGTERM 消息
signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM)

jav代码:

#启动监听退出消息
Runtime.getRuntime().addShutdownHook(new KillCodeWorkerThread()); 

#收到退出消息逻辑
public class KillCodeWorkerThread extends Thread {
    @Override
    public void run() {
        System.out.println("收到关闭信号");
    }
}

注意:Runtime.getRuntime().addShutdownHook()的实现类一定要是一个线程。第二:ShutdownHook是并发执行的,可以同时出发多个,注意实际逻辑释放需要锁。

c++代码:

#退出运行方法
void signalHandler( int signum )
{
    cout << " 监听到了退出 \n";
    // 清理并关闭
   exit(signum);   
}
#注册信号 SIGINT 和信号处理程序 
signal(SIGINT, signalHandler);

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表