The standard environment of a process.
All access to the outside world comes from running the event loop, which provides an environment (e.g. an Eio_unix.Stdenv.base
).
Example:
let () =
Eio_main.run @@ fun env ->
Eio.Path.with_open_dir env#fs "/srv/www" @@ fun www ->
serve_files www
~net:env#net
Standard streamsTo use these, see Flow
.
val stdout : < stdout : Flow.sink as 'a.. > -> 'a
val stderr : < stderr : Flow.sink as 'a.. > -> 'a
File-system accessTo use these, see Path
.
val cwd : < cwd : _ Path.t as 'a.. > -> 'a
cwd t
is the current working directory of the process (this may change over time if the process does a "chdir" operation, which is not recommended).
val fs : < fs : _ Path.t as 'a.. > -> 'a
fs t
is the process's full access to the filesystem.
Paths can be absolute or relative (to the current working directory). Using relative paths with this is similar to using them with cwd
, except that this will follow ".." and symlinks to other parts of the filesystem.
fs
is useful for handling paths passed in by the user.
NetworkTo use this, see Net
.
val net : < net : Net.t as 'a.. > -> 'a
net t
gives access to the process's network namespace.
ProcessesTo use this, see Process
.
val process_mgr : < process_mgr : Process.mgr as 'a.. > -> 'a
process_mgr t
allows you to manage child processes.
Domains (using multiple CPU cores)To use this, see Domain_manager
.
val domain_mgr : < domain_mgr : Domain_manager.t as 'a.. > -> 'a
domain_mgr t
allows running code on other cores.
TimeTo use this, see Time
.
clock t
is the system clock (used to get the current time and date).
val mono_clock : < mono_clock : Time.Mono.t as 'a.. > -> 'a
mono_clock t
is a monotonic clock (used for measuring intervals).
Randomnessval secure_random : < secure_random : Flow.source as 'a.. > -> 'a
secure_random t
is an infinite source of random bytes suitable for cryptographic purposes.
Debuggingval debug : < debug : < Debug.t .. > as 'a.. > -> 'a
debug t
provides privileged controls for debugging.