Scryer Prolog

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 to Path

  • process(-Process) Process will be assigned a process handle for the spawned process

  • env(+List) Don't inherit environment variables and set the variables defined in List

  • environment(+List) Inherit environment variables and set/override the variables defined in List

  • stdin(Spec), stdout(Spec) or stderr(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 or infinite

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

process_id/2