У меня Windows Server 2003 (Enterprise, SP2).
Насколько я понимаю, любой процесс, созданный пользователем, будет завершен, когда пользователь выйдет из учетной записи. Но этого не происходит. Я вхожу в систему через учетную запись администратора. Запустите простой процесс Java и выйдите из системы. Но процесс не убивается.
Есть какая-то конфигурация для этого или чего-то такого?
Я в основном программист и не очень разбираюсь в серверах, поэтому я застрял. Я обнаружил, что при выходе из системы 1) Win32 должен отправлять CTRL_LOGOFF_EVENT всем процессам, запущенным этим пользователем. 2) Предполагается, что JVM обработает это событие и завершит работу виртуальной машины.
Но я не могу понять, почему мой java-процесс не завершается после выхода из системы.
Любая идея!!!
Можете ли вы нормально завершить процесс без выхода из системы, или он тоже зависает в этом случае? Можете ли вы настроить свой код, чтобы выяснить, где он «застревает» и получает ли он ожидаемый сигнал? Некоторые служебные программы Sysinternals текст ссылки может показать, что делает ваш процесс, когда вы ожидаете его завершения. Можете ли вы подключить отладчик к отложенному процессу после повторного входа в систему и посмотреть, что он делает?
Возможно, процесс завис и / или неправильно обрабатывает событие.
Посмотрите, может ли это помочь: http://www.windowsitpro.com/article/configuration/how-can-i-automatically-kill-hung-processes-when-i-logoff-.aspx
Некоторое время назад со мной случилось нечто подобное (не java, однако), но оказалось, что процесс, который я не мог остановить, выйдя из системы, на самом деле был службой, работающей на этом сервере.
Процесс останется в памяти после того, как система попытается завершить его, если он запускает какой-то код в драйвере или если у другого процесса все еще открыт дескриптор.
Как проверить, что процесс не убит? А что делает ваша Java-программа?