NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
process.hpp
浏览该文件的文档.
1#ifndef NEFORCE_CORE_SYSTEM_PROCESS_HPP__
2#define NEFORCE_CORE_SYSTEM_PROCESS_HPP__
3
11
14NEFORCE_BEGIN_NAMESPACE__
15
21
26struct process_exception final : system_exception {
27 explicit process_exception(const char* info = "Process Operation Failed.", const char* type = static_type,
28 const int code = 0) noexcept :
29 system_exception(info, type, code) {}
30
31 explicit process_exception(const exception& e) :
32 system_exception(e) {}
33
34 ~process_exception() override = default;
35 static constexpr auto static_type = "process_exception";
36};
37 // Exceptions
39
45
52class NEFORCE_API process {
53public:
58#ifdef NEFORCE_PLATFORM_WINDOWS
59 unsigned long;
60#else
61 int;
62#endif
63
71 struct state_info {
73
74#ifdef NEFORCE_PLATFORM_WINDOWS
75 native_id_type thread_id;
76 void* process_handle;
77 void* thread_handle;
78#endif
79
83 };
84
97
109
116 enum class permission {
117 read = 0x01,
118 write = 0x02,
119 execute = 0x04,
120 terminate = 0x08,
121 query_info = 0x10,
122 all = 0xFF
123 };
124
129 enum class state {
130 running,
131 suspended,
132 stopped,
133 exited,
134 unknown
135 };
136
145 NEFORCE_NODISCARD static state_info create(const string& executable, const vector<string>& args = {},
146 bool capture_output = false);
147
155 static int wait_for(state_info& info, int timeout_ms = -1);
156
162 static bool terminate(const state_info& info) noexcept;
163
169 static bool suspend(const state_info& info) noexcept;
170
176 static bool resume(const state_info& info) noexcept;
177
183 NEFORCE_NODISCARD static bool is_running(const state_info& info) noexcept;
184
189 NEFORCE_NODISCARD static native_id_type current_id() noexcept;
190
196 NEFORCE_NODISCARD static memory_info get_memory_info(const state_info& info);
197
203 NEFORCE_NODISCARD static state get_state(const state_info& info);
204
211 NEFORCE_NODISCARD static bool check_permission(const state_info& info, permission permission);
212
218 NEFORCE_NODISCARD static string name(native_id_type process_id);
219};
220 // Process
222
223NEFORCE_END_NAMESPACE__
224#endif // NEFORCE_CORE_SYSTEM_PROCESS_HPP__
管道类
进程管理类
int native_id_type
进程ID类型
static bool resume(const state_info &info) noexcept
恢复进程
static NEFORCE_NODISCARD bool is_running(const state_info &info) noexcept
检查进程是否正在运行
state
进程状态枚举
static bool terminate(const state_info &info) noexcept
终止进程
static NEFORCE_NODISCARD state_info create(const string &executable, const vector< string > &args={}, bool capture_output=false)
创建新进程
static bool suspend(const state_info &info) noexcept
挂起进程
static NEFORCE_NODISCARD memory_info get_memory_info(const state_info &info)
获取进程内存信息
static NEFORCE_NODISCARD string name(native_id_type process_id)
根据进程ID获取进程名称
static NEFORCE_NODISCARD native_id_type current_id() noexcept
获取当前进程ID
permission
进程权限枚举
static NEFORCE_NODISCARD state get_state(const state_info &info)
获取进程状态
static int wait_for(state_info &info, int timeout_ms=-1)
等待进程结束
static NEFORCE_NODISCARD bool check_permission(const state_info &info, permission permission)
检查进程权限
动态大小数组容器
unsigned long long uint64_t
64位无符号整数类型
跨平台管道封装
exception(const char *info=static_type, const char *type=static_type, const int code=0)
构造函数
NEFORCE_NODISCARD int code() const noexcept
获取异常码
NEFORCE_NODISCARD const char * type() const noexcept
获取异常类型
进程内存信息
size_t peak_pagefile_usage
页面文件使用峰值
size_t working_set_size
当前工作集大小
size_t peak_working_set_size
峰值工作集大小
size_t pagefile_usage
页面文件使用量
进程信息结构
string stdout_output
捕获的标准输出内容
native_id_type process_id
进程ID
bool is_running
进程是否正在运行
pipe stdout_pipe
标准输出管道
进程时间信息
uint64_t wall_time_ms
墙上时间(毫秒)
uint64_t user_time_ms
用户态时间(毫秒)
uint64_t kernel_time_ms
内核态时间(毫秒)
动态大小数组容器