scala – 处理执行Unix命令,产生无穷无尽的输出
发布时间:2020-12-16 18:16:25 所属栏目:安全 来源:网络整理
导读:一些unix命令如tail -f或启动 python web服务器(即cherrypy)将产生无限输出,即停止它的唯一方法是Ctrl-C.我正在开发一个执行命令的scala应用程序,我的实现是: import scala.sys.process._def exe(command: String): Unit = { command !} 但是,当命令生成无
一些unix命令如tail -f或启动
python web服务器(即cherrypy)将产生无限输出,即停止它的唯一方法是Ctrl-C.我正在开发一个执行命令的scala应用程序,我的实现是:
import scala.sys.process._ def exe(command: String): Unit = { command ! } 但是,当命令生成无限输出流时,应用程序会挂起,直到我终止它或终止命令启动的进程.我也尝试添加&在命令的最后,为了在后台运行它,但我的应用程序仍然挂起. 因此,我正在寻找另一种方法来执行命令而不会挂起我的应用程序. 解决方法Seq("sh","-c","tail -f /var/log/syslog > /dev/null &") ! 适合我.我认为Randall的答案失败了因为scala只是执行命令,并且不能解释像“&”这样的shell运算符.如果传递给scala的命令是“sh”并且参数是完整的shell命令,我们可以解决此问题. scala如何解析/分离单个参数似乎也存在问题,并且使用Seq而不是单个String对此更有效. 以上等同于unix命令: sh -c 'tail -f /var/log/syslog > /dev/null &' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |