【发布时间】:2011-02-22 02:03:34
【问题描述】:
我在 Windows XP 上使用 Java,并且希望能够将命令发送到另一个程序,例如 telnet。 我不想简单地执行另一个程序。我想执行它,然后在它运行后向它发送一系列命令。 这是我想要做的代码,但它不起作用: (如果您取消注释并将命令更改为“cmd”,它将按预期工作。请帮助。) 这是一个简化的例子。在生产中会发送更多的命令,所以请不要建议调用“telnet localhost”。
try
{
Runtime rt = Runtime.getRuntime();
String command = "telnet";
//command = "cmd";
Process pr = rt.exec(command);
BufferedReader processOutput = new BufferedReader(new InputStreamReader(pr.getInputStream()));
BufferedWriter processInput = new BufferedWriter(new OutputStreamWriter(pr.getOutputStream()));
String commandToSend = "open localhost\n";
//commandToSend = "dir\n" + "exit\n";
processInput.write(commandToSend);
processInput.flush();
int lineCounter = 0;
while(true)
{
String line = processOutput.readLine();
if(line == null) break;
System.out.println(++lineCounter + ": " + line);
}
processInput.close();
processOutput.close();
pr.waitFor();
}
catch(Exception x)
{
x.printStackTrace();
}
【问题讨论】:
-
那么你想要一个java的进程间通信解决方案吗?
-
在我看来,telnet 正在将其输出写入进程输入流以外的其他东西,而 java 没有捕获它。 Process.getInputStream() 是读取进程输出内容的唯一方法吗?
标签: java command-line process send sqlcommand