Java命令行程序阻断操作系统Ctrl+C信号

最近在写个基于ssh协议进行命令行的服务器管理维护系统,基于Java的,遇到一个难题是,在ssh连接到服务器之后,Ctrl+C会直接把我的Java程序关掉而不是结束远程服务器上的命令。

找到一个基于Sun JDK的解决办法,记录一下(Win7,Redhet,CentOS上测试可行):

// 创建一个信号处理器
	sun.misc.SignalHandler handler = new sun.misc.SignalHandler() {
	    @Override
	    public void handle(sun.misc.Signal signal) {
	        // 什么都不做
	    }
	};
	// 设置INT信号(Ctrl+C中断执行)交给指定的信号处理器处理,废掉系统自带的功能
	sun.misc.Signal.handle(new sun.misc.Signal("INT"), handler);

你可能感兴趣的:(java,c)