Library
Module
Module type
Parameter
Class
Class type
Mini spawn library
Note: on Unix, spawn uses vfork by default. It has been tested, but if you believe this is causing a problem in your application, you can change this default at runtime by setting the environment variable SPAWN_USE_FORK
.
module Working_dir : sig ... end
module Unix_backend : sig ... end
val spawn :
?env:string list ->
?cwd:Working_dir.t ->
prog:string ->
argv:string list ->
?stdin:Unix.file_descr ->
?stdout:Unix.file_descr ->
?stderr:Unix.file_descr ->
?unix_backend:Unix_backend.t ->
unit ->
int
Spawn a sub-command and return its PID. This function is low-level and should be used to build higher-level APIs.
In case of errors, it raises Unix.Unix_error
.
Binary
prog
is not searched in PATH
. It is up to the caller to do the path resolution before calling this function. Note that there is no special treatment of executable text files without a proper #!. The execvp function from the C library calls /bin/sh
in this case to imitate the behaviors of a shell but this function doesn't.
Environment
env
must be a list of strings of the form "KEY=VALUE"
. It represents the environment in which the sub-process is executed. If not specified, the environment from the process calling this function is used.
Working directory
cwd
describes what the current working directory of the sub-process should be. It defaults to Inherit
. It is an error to pass Fd _
on Windows.
Standard input/outputs
stdin
, stdout
and stderr
are the file descriptors used as standard input, output and error output of the sub-process. When not specified, they default to the ones from the calling process.
Signals
On Unix, the sub-process will have all its signals unblocked.
Implementation
unix_backend
describes what backend to use on Unix. If set to Default
, vfork
is used unless the environment variable SPAWN_USE_FORK
is set. On Windows, CreateProcess
is used.