A program for running other programs
ir
takes a JSON specification of processes to run, and runs
them. The JSON specification gives detailed control over all aspects of the
process:
- the executable to run
- the command line
- the environment
- stdin [planned], stdout, stderr, and additional file descriptors
- current working directory [planned]
- umask [planned]
- signal disposition [planned]
- process group [planned]
ir
runs the processes in concurrent subprocesses, collects detailed results,
and returns them in a JSON document. Results include,
- process ID
- exit status
- resource usage
- file descriptor outputs, if requested
ir
is a project to help me learn Rust. I deliberately avoid many dependency
crates (other than the excellend Serde), to get experience with Rust systems
programming.
Integration tests are written in Python and run under pytest
, because this is
easy to do.