我正在尝试从CLI编辑文件。我正在执行nano
命令(我知道命令总是可用的);当我执行它时,我可以看到nano的输出,但我无法与它进行交互。如何将用户输入传递给命令?您是否有更好的想法从我的Java应用程序中轻松编辑文件?
这是我的代码:
String command = "nano /tmp/163377867.txt ";
try {
Process process = Runtime.getRuntime().exec(command);
InputStream inputStream = process.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
答案 0 :(得分:1)
Java Runtime.exec
的问题在于它将stdin和stdout连接到“管道”,而许多控制台程序需要TTY设备。
解决此问题的一种方法是让Java程序的controlling terminal对您执行的程序可用:
Process proc = Runtime.getRuntime().exec(new String[]{
"sh", "-c", command+" </dev/tty >/dev/tty"});
proc.waitFor(); // wait for user to finish editing the file