process
This 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.
API documentation
Open the ../../docs/library_index.html#process link in a web browser.
Loading
To load all entities in this library, load the loader.lgt file:
| ?- logtalk_load(process(loader)).
Testing
To test this library predicates, load the tester.lgt file:
| ?- logtalk_load(process(tester)).
Usage
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)
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 error
Note: Process identifiers (PIDs) should be treated as opaque ground terms. Their internal representation varies between backend Prolog systems.
Example:
| ?- process::create('/bin/echo', ['hello.'], [stdout(Out), process(PID)]),
read_term(Out, Term, []),
close(Out).
Out = ..., PID = ..., Term = hello.