module Shell_uq:Run shell commands within Unixqueues
Shell_sysfor more information.
Shell_sys.install_job_handlersfor this purpose. This is not done automatically.
Note that this has a global side effect on the whole process, because
there is only one set of signal handlers.
class call_engine :
?ignore_error_code:bool -> ?mode:Shell_sys.group_mode -> ?stdin:Shell.producer -> ?stdout:Shell.consumer -> ?stderr:Shell.consumer -> Shell_sys.command list -> Unixqueue.event_system ->
All examples presented for the
Shell module can be easily rewritten
Shell_uq. For example, to call "ls" and collect the result in a
buffer, use this piece of code:
let ues = Unixqueue.create_unix_event_system();; let b = Buffer.create 10;; let e = new call_engine ~stdout:(Shell.to_buffer b) [ Shell.command "ls" ];; Unixqueue.run ues;; let r = Buffer.contents b;;
This means, one simply creates a
call_engine instead of invoking
Shell.call, and then runs the queue. Note that you must look at
e#state to find out whether the engine
e produced an error, no
exception is raised in this case.
It is allowed (and somehow the purpose of this module) to create
several job engines, and let them run in parallel.