The easiest way to run a subprocess is to use bin_sh’, but they are no help if you need to run a persistent subprocess to respond to multiple commands.
The easiest way to do that is to use the spawn package, which hides the messy details of forking and setting up pipes:
#!/usr/bin/mythryl fun run_subprocess () = { (spawn__premicrothread::spawn ("/bin/sh", [])) -> { from_stream, to_stream, ... }; # spawn__premicrothread is from src/lib/std/src/posix/spawn--premicrothread.pkg file::write (to_stream, "echo 'xyzzy'\n"); # file__premicrothread is from src/lib/std/src/posix/file--premicrothread.pkg file::flush to_stream; printf "Read from subprocess: '%s'\n" (string::chomp (the (file::read_line from_stream) ) ); exit 0; }; run_subprocess ();