| Did you know ... | Search Documentation: |
| Pack logtalk -- logtalk-3.101.0/docs/handbook/_sources/libraries/process.rst.txt |
.. _library_process:
processThis library provides a portable abstraction over process handling predicates found in some backend Prolog systems. Currently supports ECLiPSe, GNU Prolog, SICStus Prolog, SWI-Prolog, Trealla Prolog, and XVM.
Open the `../../docs/library_index.html#process <../../docs/library_index.html#process>`__ link in a web browser.
To load all entities in this library, load the loader.lgt file:
::
| ?- logtalk_load(process(loader)).
To test this library predicates, load the tester.lgt file:
::
| ?- logtalk_load(process(tester)).
The process object provides the following predicates for portable
process handling:
create(Executable, Arguments, Options) - Creates a new processwait(Process, Status) - Waits for a process to terminatekill(Process, Signal) - Terminates a process with a specific
signalkill(Process) - Terminates a process using the default signal
(SIGKILL)
Exit status depends on the backend. For a successfully terminated
process, Status is either 0 or exit(0). For unsuccessful
processes, Status cannot be sensibly abstracted. Consult the backens
documentation for the details.
The create/3 predicate supports the following options:
process(Pid) - Unifies Pid with the process identifier (an opaque
ground term)stdin(Stream) - Binds Stream to the process standard inputstdout(Stream) - Binds Stream to the process standard outputstderr(Stream) - Binds Stream to the process standard errortype(Type) - Sets the type (binary or text) of the
stdin/1 and stdout/1 streams
Process identifiers (PIDs) should be treated as opaque ground terms. Their internal representation varies between backend Prolog systems.
The type/1 option is ignored on ECLiPSe, GNU Prolog, Trealla Prolog, and XVM as these systems don't provide the necessary support to set the streams type at process creation.
Example:
::
| ?- process::create('/bin/echo', ['hello.'], [stdout(Out), process(PID)]),
read_term(Out, Term, []),
close(Out).
Out = ..., PID = ..., Term = hello.