可能重复:
在 Java 中重定向标准输入和标准输出
我知道如何在 Java 中执行 shell 命令,但是如何执行它以便我的应用程序可以写入其输入并从其输出中读取。
我认为你甚至解释了你的问题的答案。
当您从 java 运行外部应用程序时,您可以使用Runtime.exec()
或ProcessBuilder
访问标准输出和标准输入流。用户输入流读取外部应用程序写入的内容,输出流将命令发送到外部应用程序。
不过要小心。某些应用程序不会从 java 中获取您的命令。例如ssh
,Unix 系统中的命令旨在避免非人类用户(例如其他应用程序)使用它。出于安全原因,它需要从终端执行,因此您不能例如运行ssh otherhost
然后从 java 发送用户/密码。如果您需要这个,您必须通过其他名为expect
模拟终端并由脚本驱动的命令行实用程序运行该命令。