Skip to content

Instantly share code, notes, and snippets.

@dacr
Last active May 25, 2024 10:18
Show Gist options
  • Save dacr/cf5c43906d032eb819385be215cc7a78 to your computer and use it in GitHub Desktop.
Save dacr/cf5c43906d032eb819385be215cc7a78 to your computer and use it in GitHub Desktop.
ZIO learning - interrupting a sub command & its process / published by https://github.com/dacr/code-examples-manager #94b93765-4924-4ce4-b8fb-81fd80b27e29/af676673ce7c8598224ed61da290bd5e6b5f7b41
// summary : ZIO learning - interrupting a sub command & its process
// keywords : scala, zio, learning, process, commands, pure-functional, @testable
// publish : gist
// authors : David Crosson
// license : Apache NON-AI License Version 2.0 (https://raw.githubusercontent.com/non-ai-licenses/non-ai-licenses/main/NON-AI-APACHE2)
// id : 94b93765-4924-4ce4-b8fb-81fd80b27e29
// created-on : 2022-01-15T11:35:16+01:00
// managed-by : https://github.com/dacr/code-examples-manager
// run-with : scala-cli $file
// ---------------------
//> using scala "3.4.2"
//> using dep "dev.zio::zio:2.0.13"
//> using dep "dev.zio::zio-process:0.7.2"
// ---------------------
import zio.*
import zio.process.*
object Encapsulated extends ZIOAppDefault:
def run =
for
process <- Command("vmstat", "1").redirectErrorStream(true).run
linesFiber <- process.stdout.lines.fork
_ <- Clock.sleep(5.seconds)
_ <- process.killTree
lines <- linesFiber.join
_ <- Console.printLine(s"Gotten lines = ${lines.mkString("\n")}")
yield ()
Encapsulated.main(Array.empty)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment