Module Core_extended.Process

Low-level process handling

This is low-level enough that you should probably be using Shell instead to dispatch processes.

module Status : sig ... end
module Command_result : sig ... end
val kill : ?⁠is_child:bool ‑> ?⁠wait_for:Core.Time.Span.t ‑> ?⁠signal:Core.Signal.t ‑> Core.Pid.t ‑> unit

kills a process by sending signal; waiting for wait_for and then sending a sigkill. You need to set is_child to true when killing child processes or run waitpid on them in another.

val run : ?⁠timeout:Core.Time.Span.t ‑> ?⁠use_extra_path:bool ‑> ?⁠working_dir:string ‑> ?⁠setuid:int ‑> ?⁠setgid:int ‑> ?⁠env:[ `Extend of (string * string) list | `Replace of (string * string) list ] ‑> ?⁠input:string ‑> ?⁠keep_open:bool ‑> ?⁠stdoutf:(Core.Bytes.t ‑> int ‑> unit) ‑> ?⁠stderrf:(Core.Bytes.t ‑> int ‑> unit) ‑> ?⁠tail_len:int ‑> prog:string ‑> args:string list ‑> unit ‑> Command_result.t

Runs the process.

stdoutf s len and stderrf s len should only inspect the String.subo s ~len component of s.