Scala 2.9 中的“scala.sys.process”如何工作?

2024-01-31

我刚刚看了新的scala.sys and scala.sys.process包看看这里是否有帮助。然而,我完全不知所措。

有人有关于如何实际启动流程的示例吗?

而且,这对我来说最有趣:你能分离进程吗?

当父进程结束时,分离进程将继续运行,这是 Ant 的弱点之一。

UPDATE:

分离是什么似乎有些混乱。有一个来自我当前项目的真实例子。一次使用 z-Shell,一次使用 TakeCommand:

Z-Shell:

if ! ztcp localhost 5554; then
    echo "[ZSH] Start emulator"
    emulator                        \
    -avd    Nexus-One               \
    -no-boot-anim                   \
    1>~/Library/Logs/${PROJECT_NAME}-${0:t:r}.out   \
    2>~/Library/Logs/${PROJECT_NAME}-${0:t:r}.err   &
    disown
else
    ztcp -c "${REPLY}"
fi;

指挥:

IFF %@Connect[localhost 5554] lt 0 THEN
   ECHO [TCC] Start emulator
   DETACH emulator -avd Nexus-One -no-boot-anim
ENDIFF

在这两种情况下,模拟器都会启动,并且即使在脚本结束后也会继续运行。当然,写两次脚本是一种浪费。因此,我现在研究 Scala,以实现无需 cygwin 或 xml 语法的统一流程处理。


首次导入:

import scala.sys.process.Process

然后创建一个ProcessBuilder

val pb = Process("""ipconfig.exe""")

那么你有两个选择:

  1. 运行并阻塞直到进程退出

    val exitCode = pb.!
    
  2. 在后台运行该进程(分离)并获得Process实例

    val p = pb.run
    

    然后你可以从进程中获取退出代码(如果进程仍在运行,它将阻塞直到退出)

    val exitCode = p.exitValue
    

如果你想处理进程的输入和输出,你可以使用ProcessIO:

import scala.sys.process.ProcessIO
val pio = new ProcessIO(_ => (),
                        stdout => scala.io.Source.fromInputStream(stdout)
                          .getLines.foreach(println),
                        _ => ())
pb.run(pio)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scala 2.9 中的“scala.sys.process”如何工作? 的相关文章

随机推荐

  • 是否有用于 Windows 驱动程序开发的开源 C 库(非 c++)? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有用于 Windows 驱动程序开发的开源 C 库 非 c 我正在开发一个网络设备驱动程序 需要一些
  • Powershell 返回错误结果

    我在 Powershell 中遇到了这个奇怪的问题 而不是在其他语言中 谁能向我解释一下为什么会发生这种情况 我尝试返回指定的数字 数字 8 但该函数不断向我抛出所有内容 这是一个错误还是设计使然 Function GetNum Retur
  • 处理两个 != 子句的 OR 语句 Python

    使用Python 2 7 我知道这是非常基本的 但为什么下面的语句不能按书面方式工作 input int raw input while input 10 or input 20 print Incorrect value try agai
  • 如何将 PHP 回溯保存到错误日志中?

    我现在正在使用这个 error log serialize debug backtrace 但我每次都必须反序列化它 有没有更好的方法来存储回溯 这应该生成一个可读的字符串 error log print r debug backtrace
  • .NET for Windows 8 配置文件中的程序集列表

    我正在寻找 NET for Windows 8 配置文件中的程序集列表 这是用于 WIndows 8 Metro 风格应用程序的配置文件 与 Silverlight 一样 它不使用完整的 NET 框架 用于 Metro 风格应用程序的 NE
  • 错误消息“java.net.SocketException:套接字失败:EACCES(权限被拒绝)”

    我收到错误消息 java net SocketException 套接字失败 EACCES 权限被拒绝 当我尝试应用下面的代码时 这是我调用的函数并给了我这个异常 public void run TODO Auto generated me
  • 如何在 ImageMagick 中绘制文本并为其添加阴影?

    我正在图像上打印一些文本convert我想用黑色阴影装饰文本 我尝试过 blur or 高斯但我不能应用于文本 它仅应用于背景图像 我需要使用 draw命令与否 注释 这是我需要更新阴影的代码 font geometricslab703bt
  • Curl 错误 tlsv1 警报协议版本

    以下curl 请求返回错误 有人可以解释一下出了什么问题以及如何纠正它 我已经尝试强制curl使用不同的ssl版本 sslv3和 sslv2 但这不起作用 curl exe GET https www expert nl verbose i
  • 存储波兰语字符 mysql

    我试图保存 等字符 但它们以问号的形式保存在数据库中 我使用 phpMyAdmin 保存它们 数据库和表的排序规则是utf8 bin 尝试将排序规则更改为 utf8 unicode ci or utf8 polish ci 您可以参考 ht
  • Travis-CI中的新作业无法获取curl库

    我已经使用许多 apt get 配置了 Travis CI 并且运行完美 但从本周开始 apt get 失败 部分库无法检索 我没有更改代码 我怎么解决这个问题 有问题的库是curl 工作内容 4天前 https travis ci org
  • ExpandableList View 不展开

    我正在尝试个性化 ExpandableListTview I create Iterator Xml 带有 ExpandableList 视图 group xml 带有简单 TextView 和 Button 的相对布局 Child xml
  • 有没有办法使用 CSS 使这个 SVG 具有渐变动画效果?

    所以我发现this https i pinimg com originals 4b c7 68 4bc7687858221c6b60d7b02fe0740670 png在 Google 上搜索了一个图像 并想尝试重新创建该图形并将其动画化
  • 管理 LINQ to SQL .dbml 模型复杂性

    这个问题在一定程度上解决了这个问题LINQ to SQL dbml 最佳实践 https stackoverflow com questions 33664 best practices for managing linq to sql d
  • 为什么使用 primeng p-radiobutton 会导致 Angular 9 中出现原生元素错误?

    我有一个项目最近从 Angular 8 迁移到 Angular 9 该项目使用primeng version 4 3 0 现在p radiobutton标签在整个项目中广泛用于显示单选按钮 但它无法正常工作 这p radiobutton标签
  • XCTests 在物理设备上失败:“由于超时而取消测试......”

    XCTests 失败并显示以下消息 Canceling tests due to timeout in Waiting for test process to check in 这只是最近几天才开始出现的 我使用的是 Xcode 7 3 1
  • 在 JavaScript 中访问 JSON 对象(已解析)中的数据

    我需要从这个 JSON 对象获取数据 消息 我怎样才能用 JavaScript 做到这一点 例如 要访问姓氏 我只需使用 response i user lastname 但我怎样才能访问这些消息呢 user last message me
  • git rebase 和删除的 rebase 分支导致“交互式 rebase 已启动”错误消息

    我当时正在尝试使用几个分支进行一些操作 因此我在一个临时分支上重新建立了基础 并且当我决定不以另一种方式完成重新建立基础时 我正在解决一些冲突 然后我删除了涉及的临时分支并继续我的快乐之路 几个小时后 我想重新建立另一个分支并收到此错误消息
  • Rails:如何覆盖:destroy 方法?

    我尝试了很多方法来覆盖 destroy 方法的行为 但没有任何效果 我首先使用了 acts as paranoia 插件 但它不适用于 has many through 关联中的模型 我想覆盖 destroy 方法只是为了做这样的事情 de
  • Angular 2 在事件发出时调用函数/方法

    我有一个组件 当单击关闭按钮时可以从页面中删除该组件 我曾曝光过一个testClose用户可以注册以在组件关闭时执行某些操作的事件 如何注册该事件以在组件关闭时调用函数 例如 我想在 TestComponent 关闭时将 closeCoun
  • Scala 2.9 中的“scala.sys.process”如何工作?

    我刚刚看了新的scala sys and scala sys process包看看这里是否有帮助 然而 我完全不知所措 有人有关于如何实际启动流程的示例吗 而且 这对我来说最有趣 你能分离进程吗 当父进程结束时 分离进程将继续运行 这是 A