clojure.java.process

(source)
A process invocation API wrapping the Java process API. The primary function here is 'start' which starts a process and handles the streams as directed. It returns a map that contains keys to access the streams (if available) and the Java Process object. It is also deref-able to wait for process exit. Helper functions are available to 'capture' the output of the process stdout and to wait for an 'ok?' non-error exit. The 'exec' function handles the common case of `start'ing a process, waiting for process exit, capture and return stdout.

For more info about this library see:

https://clojuredocs.org/clojure.core
Public Variable Short Description
capture (clj) Read from input-stream until EOF and return a String (or nil if 0 length).
exec (clj) Execute a command and on successful exit, return the captured output, else throw RuntimeException.
from-file (clj) Coerce f to a file per clojure.java.io/file and return a ProcessBuilder.Redirect reading from the file.
ok? (clj) Given the map returned from 'start', wait for the process to exit and then return true on success.
start (clj) Starts an external command as args and optional leading opts map: :in - a ProcessBuilder.Redirect (default = :pipe) or :inherit :out - a ProcessBuilder.Redirect (default = :pipe) or :inherit :discard :err - a ProcessBuilder.Redirect (default = :pipe) or :inherit :discard :stdout :dir - directory to run the command from, default="." :env - {env-var value} of environment variables (all strings) Returns an ILookup containing the java.lang.Process in :process and the streams :in :out :err.
to-file (clj) Coerce f to a file per clojure.java.io/file and return a ProcessBuilder.Redirect writing to the file.