java通过kill命令关闭程序DEMO示例

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import sun.misc.Signal;
import sun.misc.SignalHandler;

public class Test implements SignalHandler{

    private static boolean isContinue = true;
    public static void main(String[] args) {
        Test testSignalHandler = new Test();  
        // install signals  
        Signal sig = new Signal("USR2");  
        Signal.handle(sig, testSignalHandler);
       
        int count = 0;
        while(isContinue)
        {
            try {
                System.out.println(count);
                count ++;
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
       
        System.out.println("Closed");
    }

    @Override
    public void handle(Signal arg0) {
        System.out.println(arg0.getName() + "is recevied.");
        isContinue = false;
    }
}

运行上述程序后在命令行:
ps aux | grep java
找到这个程序的PID。
然后执行命令:
kill -s SIGUSR2 $PID
命令中$PID是指PID的数值,如:
kill -s SIGUSR2 1360
表示向1360进程发一个SIGUSR2的信号。
java收到这个信号后,将isContinue置为false。程序就退出了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注