Send Ctrl-C to process open by Java

Viewed 29761

Under Windows OS.

I start a sub-process via a Runtime.getRuntime().exec(); I want to send a "ctrl-c" to the process to stop it.

I did a small example, with Runtime.getRuntime().exec("ping google.com -n 100000"); The code can be found there : http://pastebin.com/f6315063f

So far, I tried to send the char '3' (ctrl-C character) via Process outputStream.

Here is a bit of code:

 cmd = re.exec("ping google.com -n 10000"); 
 out = new BufferedWriter (new OutputStreamWriter(cmd.getOutputStream()));
 input =  new BufferedReader (new  InputStreamReader(cmd.getInputStream()));


 char ctrlBreak = (char)3;
 //Different testing way to send the ctrlBreak;
 out.write(ctrlBreak);
 out.flush();
 out.write(ctrlBreak+"\n");
 out.flush();

I don't want to kill the process, I just want to send a Ctrl-C signal. How can I do that?

4 Answers

Switch to Java 9 and save your time, Process has pid property now, check the documentation here for details. You can easily kill another process like this:

long pid = process.pid();
Runtime.getRuntime().exec("kill " + pid);
Related