从 Scala 终止挂起的进程

发布于 2024-11-02 09:20:45 字数 390 浏览 0 评论 0原文

我的代码必须调用一些有时会挂起的外部程序。 (无限循环,永远不会返回)

要启动我使用的外部进程:

import tools.nsc.io.Process
val res = Process("ls")
res.foreach(println)
res.waitFor // waits until a Process is finished but if it's hanging waitFor will not return or
res.destroy // kills a process

但我没有找到一种方法来检查进程是否仍在运行。或者一个 waitFor(time) ,这样我只等待一段时间。

我相信他们应该是一个简单的解决方案,但我找不到它......

My code has to call some external programs which sometimes hangs. (endless loop, will never return)

To start the external Process i use:

import tools.nsc.io.Process
val res = Process("ls")
res.foreach(println)
res.waitFor // waits until a Process is finished but if it's hanging waitFor will not return or
res.destroy // kills a process

But i didn't find a way to check if the process is still running. Or a waitFor(time) so that i only wait for some time.

I believe their should be a simple solution but i'm not able to find it...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

树深时见影 2024-11-09 09:20:45

据我所知,Process中的方法exitValue定义如下:

def exitValue(): Option[Int] =
    catching(classOf[IllegalThreadStateException]) opt process.exitValue()

因此您可以检查exitValue()是否返回None< /code> 或 Some 值。 None 表示进程仍在运行。它遵循 文档Java Process.exitValue()

As far as I can see method exitValue in Process is defined as folows:

def exitValue(): Option[Int] =
    catching(classOf[IllegalThreadStateException]) opt process.exitValue()

So you can check whether exitValue() returns None or Some value. None means that process is still running. It follows from documentation to Java Process.exitValue()

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文