相关文章推荐
踏实的移动电源  ·  R语言-数据整形之apply函数族 - ...·  9 月前    · 
急躁的吐司  ·  尽管Python解释器路径正确,但Pycha ...·  1 年前    · 
坏坏的春卷  ·  【Clickhouse】Clickhouse ...·  1 年前    · 
俊秀的椅子  ·  WebView加载h5页面弹窗无法显示问题和 ...·  1 年前    · 
腹黑的刺猬  ·  豆瓣评分9.0,热销10W册的《Python ...·  2 年前    · 
Code  ›  VC++使用GetProcessTimes获取进程创建时间、销毁时间、用户态时间、内核态时间开发者社区
https://cloud.tencent.com/developer/article/2368692
儒雅的梨子
7 月前
ccf19881030

VC++使用GetProcessTimes获取进程创建时间、销毁时间、用户态时间、内核态时间

前往小程序,Get 更优 阅读体验!
立即前往
腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
ccf19881030
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > VC++使用GetProcessTimes获取进程创建时间、销毁时间、用户态时间、内核态时间

VC++使用GetProcessTimes获取进程创建时间、销毁时间、用户态时间、内核态时间

作者头像
ccf19881030
发布 于 2023-12-08 14:38:40
622 0
发布 于 2023-12-08 14:38:40
举报
文章被收录于专栏: ccf19881030的博客

一、GetProcessTimes函数简介(微软MSDN)

微软提供了一个非常有用的API函数 GetProcessTimes 用来获取进程创建时间、销毁时间、用户态时间、内核态时间,msdn连接为: GetProcessTimes 函数 (processthreadsapi.h) 其函数原型为:

代码语言: javascript
复制
BOOL GetProcessTimes(
  [in]  HANDLE     hProcess,
  [out] LPFILETIME lpCreationTime,
  [out] LPFILETIME lpExitTime,
  [out] LPFILETIME lpKernelTime,
  [out] LPFILETIME lpUserTime
);

其参数如下: 其返回值和函数说明如下:

二、示例程序

相关示例程序如下所示:

代码语言: javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <Psapi.h>
#include <winnt.h>
#include <winternl.h>
#include <chrono>
#include <iostream>
using namespace std;
using namespace std::chrono;
void test_GetProcessTimes()
	HANDLE     processHandle = GetCurrentProcess();
	DWORD      currentProcessId = GetProcessId(processHandle);
	FILETIME createTime, exitTime, kernelTime, userTime;
	// 获取当前进程的PID
	DWORD pid = GetCurrentProcessId();
	printf("pid: %d\t currentProcessId: %d\n", pid, currentProcessId);
	GetProcessTimes(processHandle, &createTime, &exitTime, &kernelTime, &userTime);
	printf("processHandle: %lu\t currentProcessId: %d\n", HandleToULong(processHandle), currentProcessId);
	printf("Create time: %lu\t       %lu\nExit Time: %lu\t     %lu\nKernel time: %lu\t       %lu\nUser time: %lu\t    %lu\n",
		createTime.dwLowDateTime, createTime.dwHighDateTime,
		exitTime.dwLowDateTime, exitTime.dwHighDateTime,
		kernelTime.dwLowDateTime, kernelTime.dwHighDateTime,
		userTime.dwLowDateTime, userTime.dwHighDateTime);
	::CloseHandle(processHandle);
// 返回进程pid创建时间到现在时间经过的秒数
double get_uptime_sec(DWORD pid)
	double r{ 0 };
	HANDLE hProcess = ::OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, pid);
	if (hProcess)
		FILETIME creationTime, exitTime, kernelTime, userTime;
		if (::GetProcessTimes(
			hProcess, &creationTime, &exitTime, &kernelTime, &userTime)) {
			LARGE_INTEGER tCreate;
			tCreate.LowPart = creationTime.dwLowDateTime;
			tCreate.HighPart = creationTime.dwHighDateTime;
			std::cout << "tCreate: " << tCreate.QuadPart << std::endl;
			int64_t tt = (static_cast<int64_t>(creationTime.dwHighDateTime) << 32) | creationTime.dwLowDateTime;
			std::cout << "tt: " << tt << std::endl;
			SYSTEMTIME stCreate;
			FileTimeToSystemTime(&creationTime, &stCreate);
			r = (double)stCreate.wHour * 3600.0 +
				(double)stCreate.wMinute * 60.0 +
				(double)stCreate.wSecond +
				(double)stCreate.wMilliseconds / 1000.0;
			std::cout << "r: " << r << std::endl;
 
推荐文章
踏实的移动电源  ·  R语言-数据整形之apply函数族 - 银河统计 - 博客园
9 月前
急躁的吐司  ·  尽管Python解释器路径正确,但Pycharm终端(PowerShell)对虚拟环境使用了错误的路径
1 年前
坏坏的春卷  ·  【Clickhouse】Clickhouse 运算符 操作符 算术,比较,取整,逻辑,哈希,条件 字符串函数_clickhouse 三目运算符_九师兄的博客-CSDN博客
1 年前
俊秀的椅子  ·  WebView加载h5页面弹窗无法显示问题和申请摄像头权限问题做个记录_ぃ随风逍遥う的博客-CSDN博客
1 年前
腹黑的刺猬  ·  豆瓣评分9.0,热销10W册的《Python3网络爬虫开发实战(第二版)》高清PDF限时开源中..._爬虫_Python栈机-DevPress官方社区
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号