在红宝石中我有:
PTY.spawn("/usr/bin/lxc-monitor -n .+") do |i, o, pid|
# ...
end
scala / java中的这个怎么做?
答案 0 :(得分:2)
我不认为PTY已被移植到java / scala。您可以使用java中内置的Runtime。
def run() {
val rt = Runtime.getRuntime
val cmds = Array("/usr/bin/lxc-monitor", "-n .+")
val env = Array("TERM=VT100")
val p1 = rt.exec(cmds, env)
}
我使用this页面作为scala版本的基础。
<强>更新强>
要获得输出,您需要获取输入流并读取它(我知道这听起来是向后但它是相对于jvm的输入)。下面的示例使用apache commons跳过java的一些冗长部分。
import java.io.StringWriter
import org.apache.commons.io.IOUtils
class runner {
def run() {
val rt = Runtime.getRuntime
val cmds = Array("/usr/bin/lxc-monitor", "-n .+")
val env = Array("TERM=VT100")
val p1 = rt.exec(cmds, env)
val inputStream = p1.getInputStream
val writer = new StringWriter()
IOUtils.copy(inputStream, writer, "UTF-8")
val output = writer.toString()
println(output)
}
}
我从here获得了apache utils的想法。
答案 1 :(得分:2)