在不终止后台进程的情况下退出 REPL

Exit from REPL without killing background process

我在 REPL 中使用 sys.process 作为 shell 的一种。 shell 中的 Scala 有很多用途。当然,我会调用一些外部程序。但是我发现我不能让 REPL 有一个后台进程 运行。如果我通过 Ctrl-C 或发送信号终止 sbt,后台进程也会被终止。我想离开 sbt 并保留所有调用的进程 运行。我该怎么做?

问题不在于 SBT 或 Scala,而在于您创建的子进程。子进程需要 "daemonize" 才能独立于父进程。如何做到这一点取决于您正在调用哪种进程以及您 OS 在哪个 运行 上。在 Linux 上,使用以下脚本作为您正在调用的任何进程的包装器都有效:

#!/bin/bash
nohup $@ 2>&1 >/dev/null &