1 #ifndef LIBFILEZILLA_PROCESS_HEADER
2 #define LIBFILEZILLA_PROCESS_HEADER
5 #include "fsresult.hpp"
17 class impersonation_token;
35 struct process_event_type;
97 bool spawn(
native_string const& cmd, std::vector<native_string>
const& args = std::vector<native_string>(), io_redirection redirect_mode = io_redirection::redirect);
99 bool spawn(std::vector<native_string>
const& command_with_args, io_redirection redirect_mode = io_redirection::redirect);
101 #if FZ_WINDOWS || FZ_UNIX
102 bool spawn(
impersonation_token const& it,
native_string const& cmd, std::vector<native_string>
const& args, io_redirection redirect_mode = io_redirection::redirect);
113 bool spawn(
native_string const& cmd, std::vector<native_string>
const& args, std::vector<int>
const& extra_fds, io_redirection redirect_mode = io_redirection::redirect);
115 bool spawn(
impersonation_token const& it,
native_string const& cmd, std::vector<native_string>
const& args, std::vector<int>
const& extra_fds, io_redirection redirect_mode = io_redirection::redirect);
137 bool stop(
duration const& timeout = {});
147 rwresult
read(
void* buffer,
size_t len);
156 rwresult
write(
void const* buffer,
size_t len);
158 inline rwresult
write(std::string_view
const& s) {
159 return write(s.data(), s.size());
166 void* handle()
const;
195 class FZ_PUBLIC_SYMBOL forkblock final
201 forkblock(forkblock
const&) =
delete;
202 forkblock& operator=(forkblock
const&) =
delete;
Data has become available.
process_event_flag
The type of a process event.
Definition: process.hpp:25
bool spawn_detached_process(std::vector< native_string > const &cmd_with_args)
Starts a detached process.
simple_event< process_event_type, process *, process_event_flag > process_event
Definition: process.hpp:37
io_redirection
IO redirection modes.
Definition: process.hpp:78
Simple handler for asynchronous event processing.
Definition: event_handler.hpp:54
This is the recommended event class.
Definition: event.hpp:67
Impersonation tokens for a given user can be used to spawn processes running as that user...
Definition: impersonation.hpp:32
Assorted classes dealing with time.
std::wstring native_string
A string in the system's native character type and encoding. Note: This typedef changes depending on...
Definition: string.hpp:33
The namespace used by libfilezilla.
Definition: apply.hpp:17
The duration class represents a time interval in milliseconds.
Definition: time.hpp:290
Declares event_base and simple_event<>
Sets some global macros and further includes string.hpp.
The process class manages an asynchronous process with redirected IO.
Definition: process.hpp:60
A dumb thread-pool for asynchronous tasks.
Definition: thread_pool.hpp:63