В моем Java-проекте мне нужно запустить VLC Media Player (для обработки паром), и по запросу я хочу остановить потоковую передачу.В Linux я создал следующий скрипт bash, который запускает процесс VLC с некоторыми аргументами, а затем выводит его идентификатор в стандартный вывод:
cvlc $@ &
echo $!
Затем у меня есть следующий код Java, который запускает скрипт и читает его идентификаторfrom stdin:
Process proc = Runtime.getRuntime().exec("/path/to/script");
InputStream stdin = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(stdin);
BufferedReader br = new BufferedReader(isr);
String line = br.readLine();
if(line!=null) {
lastPID = new Integer(line);
System.out.println("Last vlc PID=" + lastPID);
}
Когда я хочу остановить потоковую передачу, я уничтожу процесс с соответствующим идентификатором:
Runtime.getRuntime().exec("kill " + lastPID);
Есть ли способ написать эквивалентный скрипт в Windows 7 (cmd.exe или Windows PowerShell)?В качестве альтернативы, есть ли способ написать чистый (независимый от платформы) код Java, который запускает процесс, затем получает его идентификатор и останавливает его?