xtd 0.2.0
process.hpp
Go to the documentation of this file.
1
4#pragma once
5#include "../core_export.hpp"
6#include "../date_time.hpp"
7#include "../event.hpp"
9#include "../icomparable.hpp"
10#include "../object.hpp"
11#include "../string.hpp"
12#include "../optional.hpp"
16#include <functional>
17#include <memory>
18
20struct __init_process_message_box_message__;
22
24namespace xtd {
26 namespace diagnostics {
50 class core_export_ process final : public xtd::object, public xtd::icomparable<process> {
51 struct data;
52
53 public:
60 friend process;
61 void set_data(process::data* data) {data_ = data;}
62 public:
64
68 bool is_empty() const noexcept;
70
72
78
82 xtd::diagnostics::data_received_event_handler& operator +=(const typename xtd::diagnostics::data_received_event_handler::function_t& function) noexcept;
83
87 template<class fn_t>
88 xtd::diagnostics::data_received_event_handler& operator +=(fn_t function) noexcept {
89 error_data_received_callback() += (function);
90 return xtd::diagnostics::data_received_event_handler::operator +=(function);
91 }
92
97
101 xtd::diagnostics::data_received_event_handler& operator -=(const typename xtd::diagnostics::data_received_event_handler::function_t& function) noexcept;
102
106 template<class fn_t>
107 xtd::diagnostics::data_received_event_handler& operator -=(fn_t function) noexcept {
108 error_data_received_callback() -= (function);
109 return data_received_event_handler::operator -=(function);
110 }
111
112
113 private:
114 data_received_event_handler& error_data_received_callback() noexcept;
115 process::data* data_ = nullptr;
116 };
117
123 class exit_event : protected xtd::event_handler {
124 friend process;
125 void set_data(process::data* data) {data_ = data;}
126 public:
128
132 bool is_empty() const noexcept;
134
136
141 xtd::event_handler& operator +=(const xtd::event_handler& handler) noexcept;
142
146 xtd::event_handler& operator +=(const typename xtd::event_handler::function_t& function) noexcept;
147
151 template<class fn_t>
152 xtd::event_handler& operator +=(fn_t function) noexcept {
153 exit_callback() += (function);
154 return xtd::event_handler::operator +=(function);
155 }
156
160 xtd::event_handler& operator -=(const xtd::event_handler& handler) noexcept;
161
165 xtd::event_handler& operator -=(const typename xtd::event_handler::function_t& function) noexcept;
166
170 template<class fn_t>
171 xtd::event_handler& operator -=(fn_t function) noexcept {
172 exit_callback() -= (function);
173 return xtd::event_handler::operator -=(function);
174 }
175
176
177 private:
178 event_handler& exit_callback() noexcept;
179 process::data* data_ = nullptr;
180 };
181
188 friend process;
189 void set_data(process::data* data) {data_ = data;}
190 public:
192
196 bool is_empty() const noexcept;
198
200
206
210 xtd::diagnostics::data_received_event_handler& operator +=(const typename xtd::diagnostics::data_received_event_handler::function_t& function) noexcept;
211
215 template<class fn_t>
216 xtd::diagnostics::data_received_event_handler& operator +=(fn_t function) noexcept {
217 output_data_received_callback() += (function);
218 return xtd::diagnostics::data_received_event_handler::operator +=(function);
219 }
220
225
229 xtd::diagnostics::data_received_event_handler& operator -=(const typename xtd::diagnostics::data_received_event_handler::function_t& function) noexcept;
230
234 template<class fn_t>
235 xtd::diagnostics::data_received_event_handler& operator -=(fn_t function) noexcept {
236 output_data_received_callback() -= (function);
237 return xtd::diagnostics::data_received_event_handler::operator -=(function);
238 }
239
240
241 private:
242 data_received_event_handler& output_data_received_callback() noexcept;
243 process::data* data_ = nullptr;
244 };
245
247
258
260 process(const process&) = default;
261 process& operator =(const process& value);
262 ~process();
264
266
284
301
314
320
328 intptr handle() const;
329
337 bool has_exited() const;
338
346 int32 id() const;
347
353 string machine_name() const;
354
387
393 string process_name() const;
394
501 std::istream& standard_error();
502
565 std::ostream& standard_input();
566
687 std::istream& standard_output();
688
719
725
727
732 void close();
733
742 void kill();
743
750 bool start();
751
760
771
773
800 static process start(const string& file_name);
812 static process start(const string& file_name, const string& arguments);
814
816
823
830
837
839 int32 compare_to(const process& o) const noexcept override {return this < &o ? -1 : this > &o ? 1 : 0;}
841
842 protected:
844
849 virtual void on_exited();
851
852 private:
853 xtd::sptr<data> data_;
854 friend __init_process_message_box_message__;
855 inline static xtd::delegate<void(const string&)> message_box_message_;
856 };
857 }
858}
Represents a process error data received event.
Definition process.hpp:59
bool is_empty() const noexcept
Gets a value indicate if the event is empty.
Represents a process exit event.
Definition process.hpp:123
bool is_empty() const noexcept
Gets a value indicate if the event is empty.
Represents a process output data received event.
Definition process.hpp:187
bool is_empty() const noexcept
Gets a value indicate if the event is empty.
Specifies a set of values that are used when you start a process.
Definition process_start_info.hpp:39
xtd::date_time exit_time() const
Gets the time that the associated process exited.
int32 base_priority() const
Gets the base priority xof the associated process.
string process_name() const
Gets the name of the process.
output_data_received_event output_data_received
Occurs each time an application writes a line to its redirected xtd::diagnostics::process::standard_o...
Definition process.hpp:835
xtd::diagnostics::process_priority_class priority_class() const
Gets the overall priority category for the associated process.
virtual void on_exited()
Raises the xtd::diagnostics::process::exited event.
void close()
Frees all the resources that are associated with this component.
std::istream & standard_output()
Gets a stream used to read the textual output of the application.
bool enable_raising_events() const
Gets whether the xtd::diagnostics::process::exited event should be raised when the process terminates...
void kill()
Immediately stops the associated process.
int32 exit_code() const
Gets the value that the associated process specified when it terminated.
const xtd::diagnostics::process_start_info & start_info() const
Gets the properties to pass to the xtd::diagnostics::process::start() method of the xtd::diagnostics:...
process()
Initializes a new instance of the xtd::diagnostics::process class.
std::ostream & standard_input()
Gets a stream used to write the input of the application.
string machine_name() const
Gets the name of the computer the associated process is running on.
intptr handle() const
Gets the native handle of the associated process.
std::istream & standard_error()
Gets a stream used to read the error output of the application.
bool has_exited() const
Gets a value indicating whether the associated process has been terminated.
xtd::date_time start_time() const
Gets the time that the associated process was started.
error_data_received_event error_data_received
Occurs when an application writes to its redirected xtd::diagnostics::process::standard_error stream.
Definition process.hpp:822
bool start()
Starts (or reuses) the process resource that is specified by the xtd::diagnostics::process::start_inf...
exit_event exited
Occurs when a process exits.
Definition process.hpp:829
process & wait_for_exit()
Instructs the xtd::diagnostics::process component to wait indefinitely for the associated process to ...
Defines a generalized comparison method that a value type or class implements to create a type-specif...
Definition icomparable.hpp:21
virtual int32 compare_to(const process &obj) const noexcept=0
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition object.hpp:44
Contains core_export_ keyword.
Contains xtd::diagnostics::data_received_event_handler event handler.
Contains xtd::date_time class.
Contains xtd::event event.
Contains xtd::event_handler event handler.
@ date_time
Write the date and time.
Definition trace_options.hpp:31
generic_event_handler< const xtd::event_args & > event_handler
Represents the method that will handle an event that has no event data.
Definition event_handler.hpp:24
xtd::delegate< void(xtd::object &sender, const xtd::diagnostics::data_received_event_args &e)> data_received_event_handler
Represents the method that will handle the xtd::diagnostics::process::output_data_received and xtd::d...
Definition data_received_event_handler.hpp:27
#define core_export_
Define shared library export.
Definition core_export.hpp:13
xtd::shared_ptr_object< type_t > sptr
The xtd::sptr object is a shared pointer.
Definition sptr.hpp:25
int32_t int32
Represents a 32-bit signed integer.
Definition int32.hpp:23
intmax_t intptr
Represent a pointer or a handle.
Definition intptr.hpp:23
process_priority_class
Indicates the priority that the system associates with a process. This value, together with the prior...
Definition process_priority_class.hpp:26
@ o
The O key.
Definition console_key.hpp:116
Contains xtd::icomparable interface.
The xtd::diagnostics namespace provides classes that allow you to interact with system processes,...
Definition assert_dialog_result.hpp:10
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition abstract_object.hpp:8
constexpr const_pointer data() const noexcept
Gets direct access to the underlying contiguous storage.
Definition read_only_span.hpp:201
Contains xtd::object class.
Contains xtd::optional type.
Contains xtd::diagnostics::process_priority_class enum class.
Contains xtd::diagnostics::process_start_info class.
Contains xtd::string alias.