kill -SIGINT <pid>
没有用给定的特定代码杀死我的Java进程。 Ctrl + C都不起作用。
我有以下的Java代码。
CODE1:
class LoopTest {
public static void main(String[] args) throws Exception {
System.out.println("---start---");
countPrimes();
System.out.println("---end---");
}
public static void countPrimes() {
for (int i = 2; i < 10000000 ; i++) {
for (int j = 2; j < i ; j++) {
int x = i % j;
}
}
}
}
带有上述代码的Java进程运行了很长时间,如果我通过命令杀死了这个Java进程
kill -SIGINT <pid>
该进程无法终止。
但是如果使用以下无限循环运行以下代码
CODE2:
class LoopTest {
public static void main(String[] args) throws Exception {
System.out.println("---start---");
countPrimes();
System.out.println("---end---");
}
public static void countPrimes() {
for (int i = 2; true ; i++) {
for (int j = 2; j < i ; j++) {
int x = i % j;
}
}
}
}
或者如果我运行此简单代码
CODE3:
class LoopTest {
public static void main(String[] args) throws Exception {
System.out.println("---start---");
countPrimes();
System.out.println("---end---");
}
public static void countPrimes() {
while(true){}
}
}
对于上述CODE2和CODE3,我都可以使用命令kill -SIGINT <pid>
杀死Java进程。 CODE1有什么问题?或为什么不能用SIGINT信号杀死运行CODE1的Java进程?
请注意:我可以使用命令kill -SIGKILL <pid>
终止所有进程。但是我的问题只针对 SIGINT 信号。