proc
Convenience APIs around java.lang.Process and java.lang.ProcessBuilder:
-
os.proc.call provides a convenient wrapper for "function-like" processes that you invoke with some input, whose entire output you need, but otherwise do not have any intricate back-and-forth communication
-
os.proc.stream provides a lower level API: rather than providing the output all at once, you pass in callbacks it invokes whenever there is a chunk of output received from the spawned process.
-
os.proc(...) provides the lowest level API: an simple Scala API around java.lang.ProcessBuilder, that spawns a normal java.lang.Process for you to deal with. You can then interact with it normally through the standard stdin/stdout/stderr streams, using whatever protocol you want
Attributes
- Graph
-
- Supertypes
Members list
Value members
Concrete methods
Invokes the given subprocess like a function, passing in input and returning a CommandResult. You can then call result.exitCode to see how it exited, or result.out.bytes or result.err.text() to access the aggregated stdout and stderr of the subprocess in a number of convenient ways. If a non-zero exit code is returned, this throws a os.SubprocessException containing the CommandResult, unless you pass in check = false.
Invokes the given subprocess like a function, passing in input and returning a CommandResult. You can then call result.exitCode to see how it exited, or result.out.bytes or result.err.text() to access the aggregated stdout and stderr of the subprocess in a number of convenient ways. If a non-zero exit code is returned, this throws a os.SubprocessException containing the CommandResult, unless you pass in check = false.
If you want to spawn an interactive subprocess, such as vim, less, or a python shell, set all of stdin/stdout/stderr to os.Inherit
call provides a number of parameters that let you configure how the subprocess is run:
Value parameters
- check
-
disable this to avoid throwing an exception if the subprocess fails with a non-zero exit code
- cwd
-
the working directory of the subprocess
- env
-
any additional environment variables you wish to set in the subprocess
- mergeErrIntoOut
-
merges the subprocess's stderr stream into it's stdout
- propagateEnv
-
disable this to avoid passing in this parent process's environment variables to the subprocess
- shutdownGracePeriod
-
if the timeout is enabled, how long in milliseconds for the subprocess to gracefully terminate before attempting to forcibly kill it (-1 for no kill, 0 for always kill immediately)
- stderr
-
How the process's error stream is configured.
- stdin
-
any data you wish to pass to the subprocess's standard input
- stdout
-
How the process's output stream is configured.
- timeout
-
how long to wait in milliseconds for the subprocess to complete (-1 for no timeout)
Attributes
- Note
-
the issuing of
SIGTERMinstead ofSIGKILLis implementation dependent on your JVM version. Pre-Java 9, noSIGTERMmay be issued. Check the documentation for your JDK'sProcess.destroy.
Pipes the output of this process into the input of the next process. Returns a ProcGroup containing both processes, which you can then either execute or pipe further.
Pipes the output of this process into the input of the next process. Returns a ProcGroup containing both processes, which you can then either execute or pipe further.
Attributes
The most flexible of the os.proc calls, os.proc.spawn simply configures and starts a subprocess, and returns it as a java.lang.Process for you to interact with however you like.
The most flexible of the os.proc calls, os.proc.spawn simply configures and starts a subprocess, and returns it as a java.lang.Process for you to interact with however you like.
Note that if you provide ProcessOutput callbacks to stdout/stderr, the calls to those callbacks take place on newly spawned threads that execute in parallel with the main thread. Thus make sure any data processing you do in those callbacks is thread safe!