【问题标题】:error on giving cli command to subprocess of the get.Runtime.exec()将 cli 命令提供给 get.Runtime.exec() 的子进程时出错
【发布时间】:2013-05-25 08:55:47
【问题描述】:

我遇到的问题是调用 cmd.exe 后程序将输出显示为

运行: 成功 Microsoft Windows [版本 6.1.7600] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\prodesign\Documents\NetBeansProjects\Procs>

之后 > 它只是挂起 它试图通过 OutputStreamWriter 发送“exit\n”字符串,但没有成功 java的代码如下

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);     

    try
{
  int exitVal;
  char c;
  String ch="exit\n";
 Process process = Runtime.getRuntime().exec("cmd.exe");
  //"cmd /c C:/hello.exe",}
 OutputStream stdin = process.getOutputStream ();
 InputStream stderr = process.getErrorStream ();
 InputStream stdout = process.getInputStream ();

 BufferedReader reader = new BufferedReader (new InputStreamReader(stdout));
 BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin));
 System.out.println("sucesss");
 do{ c=(char)reader.read();
 System.out.print(c);

 }while(c!='>');

writer.write(ch);

exitVal=process.waitFor();
System.out.println("Exited with error code "+exitVal);

 }catch (Exception e)
 {
 e.printStackTrace();
 }
}
}

谢谢

【问题讨论】:

    标签: java


    【解决方案1】:

    试试这个:

     writer.write("exit");
     writer.newLine();
    

    我认为 "\n" 行不通。它不会发送命令,直到您刷新流或发送 newLine();命令。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-20
    • 2019-01-03
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 2016-07-08
    • 2013-08-27
    相关资源
    最近更新 更多