Java对信号的处理

本文主要包括Java如何处理信号,直接上代码。

 

1. 实现SignalHandler

package com.chzhao.SignalTest;



import sun.misc.*;



@SuppressWarnings("restriction")

public class TestSignal implements SignalHandler {



    public void handle(Signal arg0) {

        System.out.println(arg0.getName() + "is recevied.");

    }

}

2.主函数部分

package com.chzhao.SignalTest;



import sun.misc.*;



public class App {

    @SuppressWarnings("restriction")

    public static void main(String[] args) {

        TestSignal handler = new TestSignal();

        Signal.handle(new Signal("TERM"), handler);

        Signal.handle(new Signal("INT"), handler);

        Signal.handle(new Signal("USR1"), handler);

        Signal.handle(new Signal("USR2"), handler);

        for (;;) {

            System.out.println("do something");

            try {

                Thread.sleep(1000);

            } catch (InterruptedException e) {

                e.printStackTrace();

            }

        }

    }

}

这里面注册了4个信号。

在Linux下支持的信号(具体信号kill -l命令查看):
SEGV, ILL, FPE, BUS, SYS, CPU, FSZ, ABRT, INT, TERM, HUP, USR1, USR2, QUIT, BREAK, TRAP, PIPE
在Windows下支持的信号:
SEGV, ILL, FPE, ABRT, INT, TERM, BREAK

 

你可能感兴趣的:(java)