Module Lwt_process

module Lwt_process: sig .. end
Process management


This modules allow you to spawn processes and communicate with them.
type command = string * string array 
A command. The first field is the name of the executable and the second is the list of arguments. For example:

          ("ls", [|"ls""-l"|])
        
.

Notes:

          ("", [|"echo""\000foo bar"|])
        

is the same as:

          ("", [|"echo""foo""bar"|])
        
.
val shell : string -> command
A command executed with the shell. (with "/bin/sh -c <cmd>" on Unix and "cmd.exe /c <cmd>" on Windows).

All the following functions take an optionnal argument timeout. If specified, after expiration, the process will be sent a Unix.sigkill signal and channels will be closed.

High-level functions


Redirections

type redirection = [ `Close
| `Dev_null
| `FD_copy of Unix.file_descr
| `FD_move of Unix.file_descr
| `Keep ]
A file descriptor redirection. It describe how standard file descriptors are redirected in the child process.

Note: all optionnal redirection argumetns default to `Keep

Executing

val exec : ?timeout:float ->
?env:string array ->
?stdin:redirection ->
?stdout:redirection ->
?stderr:redirection ->
command -> Unix.process_status Lwt.t
Executes the given command and returns its exit status.

Receiving

val pread : ?timeout:float ->
?env:string array ->
?stdin:redirection ->
?stderr:redirection -> command -> string Lwt.t
val pread_chars : ?timeout:float ->
?env:string array ->
?stdin:redirection ->
?stderr:redirection -> command -> char Lwt_stream.t
val pread_line : ?timeout:float ->
?env:string array ->
?stdin:redirection ->
?stderr:redirection -> command -> string Lwt.t
val pread_lines : ?timeout:float ->
?env:string array ->
?stdin:redirection ->
?stderr:redirection -> command -> string Lwt_stream.t

Sending

val pwrite : ?timeout:float ->
?env:string array ->
?stdout:redirection ->
?stderr:redirection ->
command -> string -> unit Lwt.t
val pwrite_chars : ?timeout:float ->
?env:string array ->
?stdout:redirection ->
?stderr:redirection ->
command -> char Lwt_stream.t -> unit Lwt.t
val pwrite_line : ?timeout:float ->
?env:string array ->
?stdout:redirection ->
?stderr:redirection ->
command -> string -> unit Lwt.t
val pwrite_lines : ?timeout:float ->
?env:string array ->
?stdout:redirection ->
?stderr:redirection ->
command -> string Lwt_stream.t -> unit Lwt.t

Mapping

val pmap : ?timeout:float ->
?env:string array ->
?stderr:redirection ->
command -> string -> string Lwt.t
val pmap_chars : ?timeout:float ->
?env:string array ->
?stderr:redirection ->
command -> char Lwt_stream.t -> char Lwt_stream.t
val pmap_line : ?timeout:float ->
?env:string array ->
?stderr:redirection ->
command -> string -> string Lwt.t
val pmap_lines : ?timeout:float ->
?env:string array ->
?stderr:redirection ->
command -> string Lwt_stream.t -> string Lwt_stream.t

Spawning processes

type state = 
| Running (*The process is still running*)
| Exited of Unix.process_status (*The process has exited*)
State of a sub-process
class process_none : ?timeout:float -> ?env:string array -> ?stdin:redirection -> ?stdout:redirection -> ?stderr:redirection -> command -> object .. end
val open_process_none : ?timeout:float ->
?env:string array ->
?stdin:redirection ->
?stdout:redirection ->
?stderr:redirection ->
command -> process_none
val with_process_none : ?timeout:float ->
?env:string array ->
?stdin:redirection ->
?stdout:redirection ->
?stderr:redirection ->
command -> (process_none -> 'a Lwt.t) -> 'a Lwt.t
class process_in : ?timeout:float -> ?env:string array -> ?stdin:redirection -> ?stderr:redirection -> command -> object .. end
val open_process_in : ?timeout:float ->
?env:string array ->
?stdin:redirection ->
?stderr:redirection ->
command -> process_in
val with_process_in : ?timeout:float ->
?env:string array ->
?stdin:redirection ->
?stderr:redirection ->
command -> (process_in -> 'a Lwt.t) -> 'a Lwt.t
class process_out : ?timeout:float -> ?env:string array -> ?stdout:redirection -> ?stderr:redirection -> command -> object .. end
val open_process_out : ?timeout:float ->
?env:string array ->
?stdout:redirection ->
?stderr:redirection ->
command -> process_out
val with_process_out : ?timeout:float ->
?env:string array ->
?stdout:redirection ->
?stderr:redirection ->
command -> (process_out -> 'a Lwt.t) -> 'a Lwt.t
class process : ?timeout:float -> ?env:string array -> ?stderr:redirection -> command -> object .. end
val open_process : ?timeout:float ->
?env:string array ->
?stderr:redirection -> command -> process
val with_process : ?timeout:float ->
?env:string array ->
?stderr:redirection ->
command -> (process -> 'a Lwt.t) -> 'a Lwt.t
class process_full : ?timeout:float -> ?env:string array -> command -> object .. end
val open_process_full : ?timeout:float ->
?env:string array -> command -> process_full
val with_process_full : ?timeout:float ->
?env:string array ->
command -> (process_full -> 'a Lwt.t) -> 'a Lwt.t