I am starting a server using Java:
private void startServerButtonMouseClicked(java.awt.event.MouseEvent evt) {
SwingUtilities.invokeLater(new Runnable() {
String[] command = {"CMD", "/C", "activator run"};
public void run() {
try {
ProcessBuilder processbuilder = new ProcessBuilder(command);
processbuilder.directory(new File("D:\\temp"));
Process process = processbuilder.start();
IOThreadHandler thread = new IOThreadHandler(process.getInputStream());
thread.start();
// TODO : Server name as key
serverProcessMap.put("service", process);
} catch (InterruptedException ex) {
Logger.getLogger(DevUtilsUI.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (IOException ex) {
Logger.getLogger(DevUtilsUI.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
}
Now I am trying to kill the same process by passing Ctrl+d. Ctrl+d equivalent is number 4. But it is not working. Why it is not working? I am pasting the Java code for stopping the process:
OutputStream os = process.getOutputStream();
os.write(4);
os.flush();
os.close();
I referenced this from the following link: Send Ctrl-C to process open by Java