Base module

Process

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

Process

#include <icy/process.h>

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

Public Attributes

ReturnNameDescription
std::stringfilePath to the program to execute. Convenience proxy for options.file. Must be set before [spawn()](#spawn)
std::stringcwdSet the current working directory. Convenience proxy for options.cwd. Must be set before [spawn()](#spawn)
std::vector< std::string >argsCommand line arguments to pass to the process. Convenience proxy for options.args. Must be set before [spawn()](#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()](#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

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


cwd

std::string cwd

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


args

std::vector< std::string > args

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


env

std::vector< std::string > env

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()](#spawn)


onstdout

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

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


onstderr

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

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


onexit

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

Exit callback. Called with process exit status code.


options

ProcessOptions options

LibUV C options. Available for advanced use cases.

Public Methods

ReturnNameDescription
ProcessConstructs a [Process](#process-4) attached to the given event loop.
ProcessConstructs a [Process](#process-4) with initial command-line arguments.
~ProcessDestructor.
ProcessDeleted constructor.
ProcessDeleted constructor.
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)

Constructs a [Process](#process-4) attached to the given event loop.

Parameters

  • 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)

Constructs a [Process](#process-4) with initial command-line arguments.

Parameters

  • args Initializer list of argument strings. The first element is typically the executable path.

  • loop Event loop to use for I/O and exit notifications. Defaults to the default loop.


~Process

~Process()

Destructor.


Process

Process(const Process &) = delete

Deleted constructor.


Process

Process(Process &&) = delete

Deleted constructor.


spawn

void spawn()

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


kill

bool kill(int signum)

Sends a signal to the process.

Parameters

  • signum Signal number to send (default: SIGTERM).

Returns

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


pid

const

int pid() const

Returns the process PID, or 0 if not spawned.


in

Pipe & in()

Returns the stdin pipe.


out

Pipe & out()

Returns the stdout pipe.


err

Pipe & err()

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

_stdin

Pipe _stdin

_stdout

Pipe _stdout

_stderr

Pipe _stderr

_stdio

uv_stdio_container_t _stdio

_cargs

std::vector< char * > _cargs

_cenv

std::vector< char * > _cenv

Protected Methods

ReturnNameDescription
voidinit

init

void init()