package spawn

  1. Overview
  2. Docs
Spawning sub-processes

Install

Dune Dependency

Authors

Maintainers

Sources

v0.10.1.tar.gz
sha256=1e3c3b1ebc78871e8e741fea5397c7d9302506e1babe842f17572449c59966c9
md5=b1ebac358d39dd48679e6395ac122561

Description

Spawn is a small library exposing only one functionality: spawning sub-process.

It has three main goals:

  1. provide missing features of Unix.create_process such as providing a working directory

  2. provide better errors when a system call fails in the sub-process. For instance if a command is not found, you get a proper [Unix.Unix_error] exception

  3. improve performances by using vfork when available. It is often claimed that nowadays fork is as fast as vfork, however in practice fork takes time proportional to the process memory while vfork is constant time. In application using a lot of memory, vfork can be thousands of times faster than fork.

Published: 21 Dec 2017

README

SPAWN - spawning system process

Spawn is a small library exposing only one function: Spawn.spawn. Its purpose is to start command in the background. Spawn aims to provide a few missing features of Unix.create_process such as providing a working directory as well as improving error reporting and performance.

Errors such as directory or program not found are properly reported as Unix.Unix_error exceptions, on both Unix and Windows.

On Unix, Spawn uses vfork by default as it is often a lot faster than fork. There is a benchmark comparing Spawn.spawn to Unix.create_process in spawn-lib/bench. If you don't trust vfork, you can set the environment variable SPAWN_USE_FORK to make Spawn use fork instead.

Dependencies (2)

  1. jbuilder >= "1.0+beta12"
  2. ocaml >= "4.02.3"

Dev Dependencies

None

Used by (4)

  1. bun < "0.3.2"
  2. core = "v0.10.0"
  3. ocaml-lsp-server >= "1.9.0"
  4. shexp = "v0.10.0"

Conflicts

None

OCaml

Innovation. Community. Security.