0

ディレクトリでlsoft +dを呼び出すためにscalaを適切に使用するにはどうすればよいですか?

例:

import scala.sys.process._

("lsof +d /home/brad") 
4

1 に答える 1

1

理論的には、それはちょうど

import sys.process._
"lsof +d /home/brad".!!

また

Seq("lsof", "+d", "/home/brad").!!

問題は、このプロセスがゼロ以外の終了値を持つ可能性があり、!!メソッドが例外をスローするだけで、結果の文字列が得られないことです。

回避策として、以下は終了値 1 が存在する場合でも機能するようです。

Seq("lsof", "+d", "/home/brad").lines_!.mkString("\n")

終了値も確認したい場合は、プロセス ロガーで出力をキャプチャできます。

var lines = Vector.empty[String]
val log = ProcessLogger(lines :+= _)
val p   = Seq("lsof", "+d", "/home/brad").run(log)
val res = p.exitValue // blocks until process is finished and returns the exit value
val s   = lines.mkString("\n") // the resulting output
于 2012-08-08T12:22:24.863 に答える