4

ルビーで私は持っています:

PTY.spawn("/usr/bin/lxc-monitor -n .+") do |i, o, pid|
  # ...
end

これはscala/javaでどのように行いますか?

4

2 に答える 2

3

JPtyまたはpty4jを試してください。これらは、JNA を使用した Java 用の pty の実装です。

于 2013-08-03T22:37:50.077 に答える
2

PTY が java/scala に移植されたとは思えません。Java から組み込みのランタイムを使用できます。

  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)
  }

このページを 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)
  }

}

Apache utils のアイデアはhereから得ました。

于 2012-06-09T21:50:05.707 に答える