package spawn
Spawning sub-processes
Install
Dune Dependency
Authors
Maintainers
Sources
spawn-v0.10.0.tar.gz
sha256=b893c346622255c88bd33d4ba09e977574d4e135c1e58c54191c50cdc6fb0626
md5=5694d4c18db5e731d610ea4567185b17
Description
Spawn is a small library exposing only one functionality: spawning sub-process.
It has three main goals:
-
provide missing features of Unix.create_process such as providing a working directory
-
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
-
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: 19 Dec 2017
README
README.org
* 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.
Dev Dependencies
None
Used by (3)
-
core
= "v0.10.0"
-
ocaml-lsp-server
>= "1.9.0"
-
shexp
= "v0.10.0"
Conflicts
None
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page