gpt4 book ai didi

java - 在 Java 中与命令行工具通信

转载 作者:IT王子 更新时间:2023-10-29 01:06:36 26 4
gpt4 key购买 nike

我想在我的 Java 程序中使用 linux 命令行工具。我启动程序并使用 Process 类 ( http://download.oracle.com/javase/6/docs/api/java/lang/Process.html ) 获取输出:

 /* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
Process proc = Runtime.getRuntime().exec("octave");

BufferedReader reader =
new BufferedReader(new InputStreamReader(proc.getInputStream()));

BufferedReader errorReader =
new BufferedReader(new InputStreamReader(proc.getInputStream()));

BufferedWriter writer =
new BufferedWriter(new OutputStreamWriter(proc.getOutputStream()));

int c;
while((c = proc.getInputStream().read()) != -1) {
System.out.print((char)c);
}
System.out.println("End");
}

我得到以下输出:

GNU Octave, version 3.0.5 Copyright (C) 2008 John W. Eaton and others. This is free software; see the source code for copying conditions. There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, type `warranty'.

Octave was configured for "i486-pc-linux-gnu".

Additional information about Octave is available at http://www.octave.org.

Please contribute if you find this software useful. For more information, visit http://www.octave.org/help-wanted.html

Report bugs to (but first, please read http://www.octave.org/bugs.html to learn how to write a helpful report).

For information about changes from previous versions, type `news'.

奇怪的是,如果我在终端中运行 octave,正常输出如下:

:~/workspace/Console/src/c$ octave
GNU Octave, version 3.0.5 Copyright (C) 2008 John W. Eaton and others. This is free software; see the source code for copying conditions. There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, type `warranty'.

Octave was configured for "i486-pc-linux-gnu".

Additional information about Octave is available at http://www.octave.org.

Please contribute if you find this software useful. For more information, visit http://www.octave.org/help-wanted.html

Report bugs to (but first, please read http://www.octave.org/bugs.html to learn how to write a helpful report).

For information about changes from previous versions, type `news'.

octave:1>

所以在我的输入流中没有发送请求输入的行中的字符。为什么?难道不能检测是否有输入请求吗?

感谢您的回答!

海因里希

最佳答案

*nix 上的程序可以检测它们是否正在与终端或其他流对话。并且许多交互式 shell 类型的程序基于此做出不同的 react (通过设置不同的提示,不读取一些 init 文件甚至根本不启动)。

您可能会遇到其中一种情况。

此外,也许使用 Java API 进行 Octave 可能是更简单的方法:joPAS ,例如。

关于java - 在 Java 中与命令行工具通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3554500/

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