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 я могу уничтожить процесс Java с помощью команды kill -SIGINT <pid>
.Что не так с CODE1?ИЛИ Почему java-процесс, выполняющий CODE1, не может быть прерван сигналом SIGINT?
Обратите внимание: я могу завершить весь процесс с помощью команды kill -SIGKILL <pid>
.Но мой вопрос относится только к сигналу SIGINT .