Выход из системы не убивает процесс в 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