C++ 使用 pgrep 命令清零特定进程 CPU 信息
void MONITOR_BASE::clear_cpu_info_(std::string process_name)
{
std::string check_process_cmd = 'pgrep ' + process_name;
int process_id = system(check_process_cmd.c_str());
if (process_name == 'auto_ad_monitor_node')
{
std::string check_process_cmd = 'pgrep ' + process_name;
int process_id = system(check_process_cmd.c_str());
if (process_id == 0)
{
cpu_info_.auto_ad_monitor_node.cpu.data = 0;
cpu_info_.auto_ad_monitor_node.mem.data = 0;
cpu_info_.auto_ad_monitor_node.vsz.data = 0;
}
}
if (process_name == 'auto_ad_memory_monitor')
{
std::string check_process_cmd = 'pgrep ' + process_name;
int process_id = system(check_process_cmd.c_str());
if (process_id == 0)
{
cpu_info_.auto_ad_memory_monitor.cpu.data = 0;
cpu_info_.auto_ad_memory_monitor.mem.data = 0;
cpu_info_.auto_ad_memory_monitor.vsz.data = 0;
}
}
if (process_name == 'auto_ad_localization')
{
std::string check_process_cmd = 'pgrep ' + process_name;
int process_id = system(check_process_cmd.c_str());
if (process_id == 0)
{
cpu_info_.auto_ad_localization.cpu.data = 0;
cpu_info_.auto_ad_localization.mem.data = 0;
cpu_info_.auto_ad_localization.vsz.data = 0;
}
}
if (process_name == 'auto_ad_planning')
{
std::string check_process_cmd = 'pgrep ' + process_name;
int process_id = system(check_process_cmd.c_str());
if (process_id == 0)
{
cpu_info_.auto_ad_planning.cpu.data = 0;
cpu_info_.auto_ad_planning.mem.data = 0;
cpu_info_.auto_ad_planning.vsz.data = 0;
}
}
}
这个函数 clear_cpu_info_ 的功能是根据进程是否存在来清零对应进程的 cpu_info_ 的值。
函数的实现逻辑如下:
- 首先,使用
pgrep命令检查指定进程名 (process_name) 是否存在,并将结果存储在process_id中。 - 接下来,根据
process_name来判断需要清零的进程对应的cpu_info_的值。 - 如果
process_id为 0,说明进程不存在,则将对应进程的cpu.data、mem.data和vsz.data设置为 0。
这个函数可以确保 cpu_info_ 的值与进程的实际状态保持一致。
原文地址: https://www.cveoy.top/t/topic/j1A 著作权归作者所有。请勿转载和采集!