Jade Dungeon

进程控制

进程控制

执行命令

scala.sys.process包提供了与shell交互的工具:

import sys.process._

"ls -al .." !

消息被发送到由字符串隐式转换成sys.process.ProcessBuilder单例对象。成功返回值 为0,失败为非0的错误码(和shell一样)。

返回结果

!!取得返回结果(字符串形式):

val result =  "ls -al .." !!

管道

#实现管道:

"ls -al .." #! "grep src" !

重定向

重定向输出#>,追加用#>>

"ls -al .." #>> new File("output.txt") !

重定向输入#<

"grep sec" #< new File("output.txt") !

"grep Scala" #< new URL("http://horstmann.com/index.html") !

结合进程

如果p成功,执行q

p #&& q

如果p不成功,执行q

p #|| q

环境变量

通过Process对象的apply方法来构造ProcessBuilder。具体参数包括:

  • 命令
  • 当前路径
  • 键-值对偶
val p = Process(cmd, new File(dirName), ("LANG", "en_US"))

"echo 42" #! p!