WPILibC++ 2023.4.3
|
#include <wpinet/uv/Process.h>
Classes | |
struct | Option |
Structure for Spawn() option temporaries. More... | |
Public Member Functions | |
Process (const private_init &) | |
~Process () noexcept override=default | |
void | Kill (int signum) |
Sends the specified signal to the process. More... | |
uv_pid_t | GetPid () const noexcept |
Get the process ID. More... | |
Public Member Functions inherited from wpi::uv::HandleImpl< Process, uv_process_t > | |
std::shared_ptr< Process > | shared_from_this () |
std::shared_ptr< const Process > | shared_from_this () const |
uv_process_t * | GetRaw () const noexcept |
Get the underlying handle data structure. More... | |
Public Member Functions inherited from wpi::uv::Handle | |
Handle (const Handle &)=delete | |
Handle (Handle &&)=delete | |
Handle & | operator= (const Handle &)=delete |
Handle & | operator= (Handle &&)=delete |
virtual | ~Handle () noexcept |
Type | GetType () const noexcept |
Get the type of the handle. More... | |
std::string_view | GetTypeName () const noexcept |
Get the name of the type of the handle. More... | |
std::shared_ptr< Loop > | GetLoop () const noexcept |
Get the loop where this handle runs. More... | |
Loop & | GetLoopRef () const noexcept |
Get the loop where this handle runs. More... | |
bool | IsActive () const noexcept |
Check if the handle is active. More... | |
bool | IsClosing () const noexcept |
Check if a handle is closing or closed. More... | |
void | Close () noexcept |
Request handle to be closed. More... | |
void | SetLoopClosing (bool loopClosing) noexcept |
Set if the loop is closing. More... | |
bool | IsLoopClosing () const noexcept |
Get the loop closing status. More... | |
void | Reference () noexcept |
Reference the given handle. More... | |
void | Unreference () noexcept |
Unreference the given handle. More... | |
bool | HasReference () const noexcept |
Check if the given handle is referenced. More... | |
size_t | RawSize () const noexcept |
Return the size of the underlying handle type. More... | |
uv_handle_t * | GetRawHandle () const noexcept |
Get the underlying handle data structure. More... | |
void | SetBufferAllocator (std::function< Buffer(size_t)> alloc, std::function< void(Buffer &)> dealloc) |
Set the functions used for allocating and releasing buffers. More... | |
void | FreeBuf (Buffer &buf) const noexcept |
Free a buffer. More... | |
template<typename T = void> | |
std::shared_ptr< T > | GetData () const |
Gets user-defined data. More... | |
void | SetData (std::shared_ptr< void > data) |
Sets user-defined data. More... | |
void | ReportError (int err) const |
Report an error. More... | |
Static Public Member Functions | |
static Option | Env (std::string_view env) |
Set environment variable for the subprocess. More... | |
static Option | Cwd (std::string_view cwd) |
Set the current working directory for the subprocess. More... | |
static Option | Uid (uv_uid_t uid) |
Set the child process' user id. More... | |
static Option | Gid (uv_gid_t gid) |
Set the child process' group id. More... | |
static Option | SetFlags (unsigned int flags) |
Set spawn flags. More... | |
static Option | ClearFlags (unsigned int flags) |
Clear spawn flags. More... | |
static Option | StdioIgnore (size_t index) |
Explicitly ignore a stdio. More... | |
static Option | StdioInherit (size_t index, int fd) |
Inherit a file descriptor from the parent process. More... | |
static Option | StdioInherit (size_t index, Pipe &pipe) |
Inherit a pipe from the parent process. More... | |
static Option | StdioCreatePipe (size_t index, Pipe &pipe, unsigned int flags) |
Create a pipe between the child and the parent. More... | |
static void | DisableStdioInheritance () |
Disables inheritance for file descriptors / handles that this process inherited from its parent. More... | |
static std::shared_ptr< Process > | SpawnArray (Loop &loop, std::string_view file, std::span< const Option > options) |
Starts a process. More... | |
static std::shared_ptr< Process > | SpawnArray (Loop &loop, std::string_view file, std::initializer_list< Option > options) |
template<typename... Args> | |
static std::shared_ptr< Process > | Spawn (Loop &loop, std::string_view file, const Args &... options) |
static std::shared_ptr< Process > | SpawnArray (const std::shared_ptr< Loop > &loop, std::string_view file, std::span< const Option > options) |
Starts a process. More... | |
static std::shared_ptr< Process > | SpawnArray (const std::shared_ptr< Loop > &loop, std::string_view file, std::initializer_list< Option > options) |
template<typename... Args> | |
static std::shared_ptr< Process > | Spawn (const std::shared_ptr< Loop > &loop, std::string_view file, const Args &... options) |
static int | Kill (int pid, int signum) noexcept |
Sends the specified signal to the given PID. More... | |
Public Attributes | |
sig::Signal< int64_t, int > | exited |
Signal generated when the process exits. More... | |
Public Attributes inherited from wpi::uv::Handle | |
sig::Signal< Error > | error |
Error signal. More... | |
sig::Signal | closed |
Closed signal. More... | |
Additional Inherited Members | |
Public Types inherited from wpi::uv::Handle | |
using | Type = uv_handle_type |
Protected Member Functions inherited from wpi::uv::HandleImpl< Process, uv_process_t > | |
HandleImpl () | |
Protected Member Functions inherited from wpi::uv::Handle | |
Handle (uv_handle_t *uv_handle) | |
void | Keep () noexcept |
void | Release () noexcept |
void | ForceClosed () noexcept |
template<typename F , typename... Args> | |
bool | Invoke (F &&f, Args &&... args) const |
Static Protected Member Functions inherited from wpi::uv::Handle | |
static void | AllocBuf (uv_handle_t *handle, size_t size, uv_buf_t *buf) |
static void | DefaultFreeBuf (Buffer &buf) |
Process handle.
Process handles will spawn a new process and allow the user to control it and establish communication channels with it using streams.
|
inlineexplicit |
|
overridedefaultnoexcept |
|
inlinestatic |
Clear spawn flags.
flags | Bitmask values from uv_process_flags. |
|
inlinestatic |
Set the current working directory for the subprocess.
cwd | current working directory |
|
inlinestatic |
Disables inheritance for file descriptors / handles that this process inherited from its parent.
The effect is that child processes spawned by this process don't accidentally inherit these handles.
It is recommended to call this function as early in your program as possible, before the inherited file descriptors can be closed or duplicated.
|
inlinestatic |
Set environment variable for the subprocess.
If not set, the parent's environment is used.
env | environment variable |
Set the child process' group id.
gid | group id |
|
inlinestaticnoexcept |
Sends the specified signal to the given PID.
pid | process ID |
signum | signal number |
|
inline |
Sends the specified signal to the process.
signum | signal number |
|
inlinestatic |
Set spawn flags.
flags | Bitmask values from uv_process_flags. |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
Starts a process.
If the process is not successfully spawned, an error is generated on the loop and this function returns nullptr.
Possible reasons for failing to spawn would include (but not be limited to) the file to execute not existing, not having permissions to use the setuid or setgid specified, or not having enough memory to allocate for the new process.
|
inlinestatic |
|
static |
Starts a process.
If the process is not successfully spawned, an error is generated on the loop and this function returns nullptr.
Possible reasons for failing to spawn would include (but not be limited to) the file to execute not existing, not having permissions to use the setuid or setgid specified, or not having enough memory to allocate for the new process.
|
inlinestatic |
Create a pipe between the child and the parent.
index | stdio index |
pipe | pipe |
flags | Some combination of UV_READABLE_PIPE, UV_WRITABLE_PIPE, and UV_OVERLAPPED_PIPE (Windows only, ignored on Unix). |
|
inlinestatic |
Explicitly ignore a stdio.
index | stdio index |
|
inlinestatic |
Inherit a file descriptor from the parent process.
index | stdio index |
fd | parent file descriptor |
Inherit a pipe from the parent process.
index | stdio index |
pipe | pipe |
Set the child process' user id.
uid | user id |
sig::Signal<int64_t, int> wpi::uv::Process::exited |
Signal generated when the process exits.
The parameters are the exit status and the signal that caused the process to terminate, if any.