Выход из системы не убивает процесс в Windows Server 2003

У меня Windows Server 2003(Enterprise, SP2).

Насколько я понимаю, любой процесс, созданный пользователем, будет прерван, когда пользователь выйдет из учетной записи. Но этого не происходит. Я вхожу через учетную запись администратора. Начните простой процесс Java и выйдите из системы. Но процесс не убит.

Есть ли конфигурация для этого или что-то?

Я в основном программист, мало знаком с серверами и поэтому застрял. Я обнаружил, что при выходе из системы 1) Win32 должен отправлять CTRL_LOGOFF_EVENT всем процессам, запущенным этим пользователем. 2) JVM должна обрабатывать это событие и завершать работу виртуальной машины.

Но я не могу понять, почему мой Java-процесс не убивается при выходе из системы.

Любая идея!!!

4 ответа

Можете ли вы нормально завершить свой процесс без выхода из системы или он также зависает в этом случае? Можете ли вы применить свой код, чтобы выяснить, где он "застревает" и получает ли он ожидаемый сигнал? Текст ссылки на некоторые утилиты процесса Sysinternals может показывать, что делает ваш процесс, когда вы ожидаете его завершения. Можете ли вы подключить отладчик к длительному процессу после того, как снова войдете в систему и посмотрите, что он делает?

Процесс останется в памяти после того, как система попытается завершить его, если он выполняет некоторый код в драйвере или если другой процесс все еще имеет дескриптор, открытый на нем.
Как вы проверяете, что процесс не убит? А что делает ваша Java-программа?

Некоторое время назад со мной происходило нечто подобное (но не в Java), но оказалось, что процесс, который я не смог остановить, выйдя из системы, на самом деле был службой, работающей на этом сервере.

Возможно, процесс застрял и / или неправильно обрабатывает событие.

Посмотрите, может ли это помочь: http://www.windowsitpro.com/article/configuration/how-can-i-automatically-kill-hung-processes-when-i-logoff-.aspx

Другие вопросы по тегам