Base module

Process

Spawns and manages a child process with stdin/stdout/stderr pipes.

#include <icy/process.h>

class Process

Defined in src/base/include/icy/process.h:32

Public Attributes

ReturnNameDescription
std::stringfilePath to the program to execute. Convenience proxy for options.file. Must be set before spawn()
std::stringcwdSet the current working directory. Convenience proxy for options.cwd. Must be set before spawn()
std::vector< std::string >argsCommand line arguments to pass to the process. Convenience proxy for options.args. Must be set before spawn()
std::vector< std::string >envEnvironment variables for the process. Each entry should be in "KEY=VALUE" format. If empty, the child inherits the parent environment. Must be set before spawn()
std::function< void(std::string)>onstdoutStdout callback. Called when a line has been output from the process.
std::function< void(std::string)>onstderrStderr callback. Called when a line has been output on stderr.
std::function< void(std::int64_t)>onexitExit callback. Called with process exit status code.
ProcessOptionsoptionsLibUV C options. Available for advanced use cases.

file

std::string file

Defined in src/base/include/icy/process.h:55

Path to the program to execute. Convenience proxy for options.file. Must be set before spawn()


cwd

std::string cwd

Defined in src/base/include/icy/process.h:60

Set the current working directory. Convenience proxy for options.cwd. Must be set before spawn()


args

std::vector< std::string > args

Defined in src/base/include/icy/process.h:65

Command line arguments to pass to the process. Convenience proxy for options.args. Must be set before spawn()


env

std::vector< std::string > env

Defined in src/base/include/icy/process.h:71

Environment variables for the process. Each entry should be in "KEY=VALUE" format. If empty, the child inherits the parent environment. Must be set before spawn()


onstdout

std::function< void(std::string)> onstdout

Defined in src/base/include/icy/process.h:97

Stdout callback. Called when a line has been output from the process.


onstderr

std::function< void(std::string)> onstderr

Defined in src/base/include/icy/process.h:101

Stderr callback. Called when a line has been output on stderr.


onexit

std::function< void(std::int64_t)> onexit

Defined in src/base/include/icy/process.h:105

Exit callback. Called with process exit status code.


options

ProcessOptions options

Type: ProcessOptions

Defined in src/base/include/icy/process.h:109

LibUV C options. Available for advanced use cases.

Public Methods

ReturnNameDescription
ProcessConstructs a Process attached to the given event loop.
ProcessConstructs a Process with initial command-line arguments.
~ProcessDestructor.
ProcessDeleted constructor.
Process &operator=Deleted assignment operator.
ProcessDeleted constructor.
Process &operator=Deleted assignment operator.
voidspawnSpawns the process. Options must be properly set. Throws an exception on error.
boolkillSends a signal to the process.
intpid constReturns the process PID, or 0 if not spawned.
Pipe &inReturns the stdin pipe.
Pipe &outReturns the stdout pipe.
Pipe &errReturns the stderr pipe.

Process

Process(uv::Loop * loop = uv::defaultLoop())

Defined in src/base/include/icy/process.h:37

Constructs a Process attached to the given event loop.

Parameters

ParameterTypeDescription
loopuv::Loop *Event loop to use for I/O and exit notifications. Defaults to the default loop.

Process

Process(std::initializer_list< std::string > args, uv::Loop * loop = uv::defaultLoop())

Defined in src/base/include/icy/process.h:42

Constructs a Process with initial command-line arguments.

Parameters

ParameterTypeDescription
argsstd::initializer_list< std::string >Initializer list of argument strings. The first element is typically the executable path.
loopuv::Loop *Event loop to use for I/O and exit notifications. Defaults to the default loop.

~Process

~Process()

Defined in src/base/include/icy/process.h:45

Destructor.


Process

Process(const Process &) = delete

Defined in src/base/include/icy/process.h:47

Deleted constructor.


operator=

Process & operator=(const Process &) = delete

Defined in src/base/include/icy/process.h:48

Deleted assignment operator.


Process

Process(Process &&) = delete

Defined in src/base/include/icy/process.h:49

Deleted constructor.


operator=

Process & operator=(Process &&) = delete

Defined in src/base/include/icy/process.h:50

Deleted assignment operator.


spawn

void spawn()

Defined in src/base/include/icy/process.h:76

Spawns the process. Options must be properly set. Throws an exception on error.


kill

bool kill(int signum = SIGTERM)

Defined in src/base/include/icy/process.h:81

Sends a signal to the process.

Returns

True if the signal was sent successfully, false if the process is not running or handle is invalid.

Parameters

ParameterTypeDescription
signumintSignal number to send (default: SIGTERM).

pid

const

int pid() const

Defined in src/base/include/icy/process.h:84

Returns the process PID, or 0 if not spawned.


in

Pipe & in()

Defined in src/base/include/icy/process.h:87

Returns the stdin pipe.


out

Pipe & out()

Defined in src/base/include/icy/process.h:90

Returns the stdout pipe.


err

Pipe & err()

Defined in src/base/include/icy/process.h:93

Returns the stderr pipe.

Protected Attributes

ReturnNameDescription
uv::Handle< uv_process_t >_handle
Pipe_stdin
Pipe_stdout
Pipe_stderr
uv_stdio_container_t_stdio
std::vector< char * >_cargs
std::vector< char * >_cenv

_handle

uv::Handle< uv_process_t > _handle

Type: uv::Handle< uv_process_t >

Defined in src/base/include/icy/process.h:114


_stdin

Pipe _stdin

Type: Pipe

Defined in src/base/include/icy/process.h:115


_stdout

Pipe _stdout

Type: Pipe

Defined in src/base/include/icy/process.h:116


_stderr

Pipe _stderr

Type: Pipe

Defined in src/base/include/icy/process.h:117


_stdio

uv_stdio_container_t _stdio[3]

Defined in src/base/include/icy/process.h:118


_cargs

std::vector< char * > _cargs

Defined in src/base/include/icy/process.h:119


_cenv

std::vector< char * > _cenv

Defined in src/base/include/icy/process.h:120

Protected Methods

ReturnNameDescription
voidinit

init

void init()

Defined in src/base/include/icy/process.h:112