Слежение за процессом, перезапуск и стандартное отключение

 
 
 
Сообщения:1
Доброго времени.

Пробую писать небольшую консольную программу для слежения за процессами, которая непосредственно запускает некий Win32 процесс, перехватывает его поток вывода и следит за корректным завершением (перезапускает процесс если он вдруг завершается с неудачным кодом из-за потенциальной ошибки).

На данном этапе, описанная выше логика работает корректно через стандартные средства ProcessBuilder, но есть проблема с выключением этой консольной программы - когда жмешь Ctrl + C, процесс за которым велась слежка остается в памяти, а наша консольная программа закрывается, в итоге приходится каждый раз лезть в диспетчер чтобы завершить процесс прежде чем запускать программу повторно.

Ниже небольшой фрагмент когда по которому на данный момент все реализовано.
Хочу обратиться за помощью чтобы исправить этот мелкий недочет, т.е. сделать так, чтобы при выключении программы (Ctrl + C) она завершала созданные процессы через ProcessBuilder.
Если есть другой способ как-то исправить, товарищи знатоки, пожалуйста подскажите!

Заранее спасибо.

Код:

Process proc;
List<String> args = new ArrayList<>();
int excode = 0;

try
{
	ProcessBuilder pb = new ProcessBuilder(args);
	proc = pb.start();

	try
	{
		InputStreamReader is = new InputStreamReader(proc.getInputStream());
		BufferedReader br = new BufferedReader(is);
		ProcessReader reader = new ProcessReader(br);
		
		reader.start();
		
		try
		{
			excode = proc.waitFor();
		}
		catch (InterruptedException e)
		{
			e.printStackTrace();
		}
	}
	catch (Exception e)
	{
		e.printStackTrace();
	}
}
catch (Exception e)
{
	e.printStackTrace();
}
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет