Module process
:- use_module(library(process)).
No description
process_create(+Exe, +Args:list, +Options).
Create a new process by executing the executable Exe and passing it the Arguments Args.
Note: On windows please take note of windows argument splitting.
Options is a list consisting of the following options:
cwd(+Path)
Set the processes working directory toPath
process(-Process)
Process
will be assigned a process handle for the spawned processenv(+List)
Don't inherit environment variables and set the variables defined inList
environment(+List)
Inherit environment variables and set/override the variables defined inList
stdin(Spec)
,stdout(Spec)
orstderr(Spec)
defines how to redirect the spawned processes io streams
The elements of List
in env(List)
/environment(List)
List must be string pairs using =/2
. env/1
and environment/1
may not be both specified.
The following stdio Spec
are available: * std
inherit the current processes original stdio streams (does currently not account for stdio being changed by set_input
or set_output
) * file(+Path)
attach the strea to the file at Path
* null
discards writes and behaves as eof for read. Equivalent to using file(/dev/null)
* pipe(-Steam)
create a new pipe and assigne one end to the created process and the other end to Stream
Specifying an option multiple times is an error, when an option is not specified the following defaults apply:
cwd(".")
environment([])
stdin(std)
,stdout(std)
,stderr(std)
process_wait(+Process, Status).
See process_create/3
with Options = []
process_wait(+Process, Status, Options).
Wait for the process behind the process handle Process
to exit.
When the process exits regulary Status
will be unified with exit(Exit)
where Exit
is the processes exit code. When the process exits was killed Status
will be unified with killed(Signal)
where Signal
is the signal number that killed the process. When the process doesn't exit before the timeout Status
will be unified with timeout
.
Options
is a a list of the following options
timeout(Timeout) supported values for
Timeout
are 0 orinfinite
Each options may be specified at most once, when an option is not specified the following defaults apply:
- timeout(infinite)
process_kill(+Process).
Kill the process using the process handle Process
. On Unix this sends SIGKILL.
Only works for processes spawned with process_create/3
that have not yet been release with process_release/1
process_release(+Process)
wait for the process to exit (if not already) and release process handle Process
It's an error if Process
is not a valid process handle