发送Ctrl-C以通过Java处理打开

Net*_*rof 15 java windows

在Windows操作系统下.

我通过Runtime.getRuntime()启动一个子进程.exec(); 我想向进程发送一个"ctrl-c"来阻止它.

我做了一个小例子,使用Runtime.getRuntime().exec("ping google.com -n 100000"); 代码可以在那里找到:http://pastebin.com/f6315063f

到目前为止,我尝试通过Process outputStream发送char'3'(ctrl-C字符).

这是一些代码:

 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();
Run Code Online (Sandbox Code Playgroud)

我不想杀死进程,我只想发送一个Ctrl-C信号.我怎样才能做到这一点?

Bri*_*new 8

我相信Ctrl-C被shell捕获并转换为信号(SIGINT),该信号被发送到底层进程(在这种情况下是您生成的进程).

因此,我认为您需要获取进程ID,然后将相应的信号发送到该进程.这个问题似乎非常相似,并指向各种使用资源.