gpt4 book ai didi

java - 使用 Runtime.getRuntime().exec(command) 时用户输入到命令行;

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:26:14 31 4
gpt4 key购买 nike

我不认为这是可能的,但我一直在使用:

Process p = Runtime.getRuntime().exec(command);

在命令行上运行命令,但现在我遇到了这样一种情况,我正在运行的命令会要求一些用户输入,例如用户名。

这无法通过正在执行的命令的参数来解决,有什么方法可以将用户名传递给同一命令行实例并继续吗?

---编辑---

我仍然无法让它工作。这些是命令行上的步骤:

C:\someProgram.exe
Login:
Passowrd:

所以我需要在运行时提示时传递登录名和密码。我得到的代码不起作用:

try {
String CMD = "\"C:\\someProgram\"";
Scanner scan = new Scanner(System.in);
ProcessBuilder builder = new ProcessBuilder(CMD);
builder.redirectErrorStream(true);
Process process = builder.start();

InputStream is = process.getInputStream();
BufferedReader reader = new BufferedReader (new InputStreamReader(is));
OutputStream out = process.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out));
String line;
try {
while (scan.hasNext()) {
String input = scan.nextLine();
if (input.toLowerCase().startsWith("login")) {
writer.write("myUsername");
} else if(input.toLowerCase().startsWith("password")){
writer.write("myPassword");
}
writer.flush();

line = reader.readLine();
while (line != null) {
System.out.println ("Stdout: " + line);
line = reader.readLine();
}
if (line == null) {
break;
}
}
process.waitFor();
}
finally {;
writer.close();
reader.close();
}
}
catch (Exception err) {
System.err.println("some message");
}

我试过类似的东西: writer.write("我的用户名\n");

任何帮助,我可以看到 someProgram.exe 被调用并在进程中运行,但它只是挂起。

最佳答案

只需写入 p.getOutputStream()。这会将用户名发送到进程的标准输入,这应该会执行您想要的操作。

out = p.getOutputStream();
out.write("fooUsername\n".getBytes());
out.flush();

关于java - 使用 Runtime.getRuntime().exec(command) 时用户输入到命令行;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13844825/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com