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 ... endmodule Unix_backend : sig ... endval 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 ‑> intSpawn 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.