2016-09-20 33 views
0

我有一个程序,允许用户按下按钮,然后运行命令行语句,用户可以看到输出。如何在Java中停止命令行过程

我现在想知道在结束之前是否可以停止命令。 当我正常运行命令提示符时,我知道命令“ctrl + c”,但是,我不确定如何在java程序中执行此操作。

runButton.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent r) { 
     JFrame runFrame = new JFrame("Running process..."); 
     runFrame.setSize(500, 400); 
     runFrame.setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
     runFrame.setLayout(null); 
     JButton somethingButton = new JButton("Stop"); 
     JButton closeButton = new JButton("Close"); 
     somethingButton.setBounds(65, 290, 105, 25); 
     closeButton.setBounds(335, 290, 105, 25); 
     JTextArea run = new JTextArea(); 
     JScrollPane runSP = new JScrollPane(run); 
     runSP.setBounds(65, 50, 375, 200); 
     run.setLineWrap(true); 
     run.setWrapStyleWord(true); 
     run.setEditable(false); 
     runFrame.add(runSP); 
     runFrame.add(somethingButton); 
     runFrame.add(closeButton); 
     runFrame.setVisible(true); 
     //Start of creating of command line stuff 
     Runtime runtime = Runtime.getRuntime(); 
     Process process = null; 
     try { 
      process = runtime.exec("ping riot.de"); 
     } catch (IOException e1) { 
      System.err.print("Error: " + e1); 
      e1.printStackTrace(); 
     } 
     try { 
      StringBuilder sb = new StringBuilder(); 
      BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream())); 
      String line; 
      while ((line = br.readLine()) != null) { 
       sb.append(line); 
       sb.append("\n"); 
      } 
      run.setText(sb.toString()); 
     } catch (IOException e) { 
      System.err.println("Error: " + e); 
     } 

     closeButton.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent c) { 
       runFrame.dispose(); 
      } 
     }); 

     somethingButton.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent c) { 
       //CODE TO STOP HERE 
      } 
     }); 
    } 
}); 
+1

System.exit(0);不适合你? – Stultuske

+0

@Stultuske我不想关闭整个程序。这是一个小片段。 – Plumel

+0

因此......您想“停止”应用程序,而不是“停止”应用程序?你的意思是打断一个线程? – Stultuske

回答

3

尝试使用所提到的代码来destry过程process.destroy();

+0

谢谢,我会看看 – Plumel

+0

我得到这个错误:在一个封闭的范围内定义的本地变量进程必须是最终的或有效的最终 – Plumel

+0

你可以把错误stacktrace。 – mhasan