module CCUnix:sig
..end
Some useful functions built on top of Unix.
status: unstable
Since 0.10
type'a
or_error =[ `Error of string | `Ok of 'a ]
type'a
gen =unit -> 'a option
val escape_str : Buffer.t -> string -> unit
type
call_result = <
|
errcode : |
(* |
Extracted from status
| *) |
|
status : |
|||
|
stderr : |
|||
|
stdout : |
val call : ?bufsize:int ->
?stdin:[ `Gen of string gen | `Str of string ] ->
?env:string array ->
('a, Buffer.t, unit, call_result) Pervasives.format4 -> 'a
call cmd
wraps the result of Unix.open_process_full cmd
into an
object. It reads the full stdout and stderr of the subprocess before
returning.bufsize
: buffer size used to read stdout and stderrstdin
: if provided, the generator or string is consumed and fed to
the subprocess input channel, which is then closed.env
: environment to run the command intypeline =
string
type
async_call_result = <
|
close_all : |
|
close_err : |
|
close_in : |
|
close_out : |
|
stderr : |
|
stdin : |
|
stdout : |
|
wait : |
|
wait_errcode : |
val async_call : ?env:string array ->
('a, Buffer.t, unit, async_call_result) Pervasives.format4 -> 'a
CCUnix.call
, but the subprocess's channels are
line generators and line sinks (for stdin).
if p
is async_call "cmd"
, then p#wait
waits for the subprocess
to die. Channels can be closed independently.val stdout : < stdout : 'a; .. > -> 'a
val stderr : < stderr : 'a; .. > -> 'a
val status : < status : 'a; .. > -> 'a
val errcode : < errcode : 'a; .. > -> 'a
val with_in : ?mode:int ->
?flags:Unix.open_flag list -> string -> f:(Pervasives.in_channel -> 'a) -> 'a
flags
: opening flags. Unix.O_RDONLY
is used in any casesval with_out : ?mode:int ->
?flags:Unix.open_flag list ->
string -> f:(Pervasives.out_channel -> 'a) -> 'a
flags
: opening flags (default [Unix.O_CREAT; Unix.O_TRUNC]
)
Unix.O_WRONLY
is used in any cases.val with_process_in : string -> f:(Pervasives.in_channel -> 'a) -> 'a
val with_process_out : string -> f:(Pervasives.out_channel -> 'a) -> 'a
type
process_full = <
|
close : |
|
stderr : |
|
stdin : |
|
stdout : |
val with_process_full : ?env:string array -> string -> f:(process_full -> 'a) -> 'a
env
: environment to pass to the subprocess.val with_connection : Unix.sockaddr ->
f:(Pervasives.in_channel -> Pervasives.out_channel -> 'a) -> 'a
Unix.open_connection
with a handlerexception ExitServer
val establish_server : Unix.sockaddr ->
f:(Pervasives.in_channel -> Pervasives.out_channel -> 'a) -> unit
Thread
is recommended if handlers might take time.
The callback should raise CCUnix.ExitServer
to stop the loop.module Infix:sig
..end
include CCUnix.Infix