winapi – 如何知道Windows上的子进程状态和资源使用情况?
我想写一个程序,它将启动一个子进程.子进程可以是
Windows模式或控制台模式程序.
我想监视子进程状态和资源使用情况.例如我想知道子进程仍在运行或终止.如果它终止,我想知道原因(正常终止或因崩溃?). 在子进程运行和/或终止期间,我想知道它的资源使用情况,特别是CPU时间(用户时间,系统)和内存使用情况(虚拟大小和/或rss).如果数字不是很准确,那就没关系. 在Unix术语中,我想要fork,exec,waitpid和getrusage.而fork setrusage exec可以限制孩子的资源使用.但我不知道如何在Windows平台上执行这些操作. 请指出Windows API名称.我自己可以研究其余的. 不希望使用Windows API以外的库.首选它不是父作为调试器工作并附加到子进程.只是不喜欢,但仍然可以接受. 解决方法
当您调用CreateProcess时,它将返回进程的句柄.
进程句柄上的WaitForSingleObject将阻塞,直到进程退出或超时已过期.超时为零将立即返回并指示进程是否仍在运行. BOOL IsProcessRunning(HANDLE process) { return WaitForSingleObject(process,0) != WAIT_OBJECT_0; } void WaitForProcessToExit(HANDLE process) { WaitForSingleObject(process,INFINITE); } 要获取正在运行的进程的退出代码,可以使用GetExitCodeProcess.但是,您需要解释错误代码的含义. 0xC0000005是访问冲突的典型情况,但并非所有崩溃都会导致此错误代码. 对于资源使用,您可以调用GetProcessTimes来获取总CPU时间,使用GetGuiResources来获取GDI句柄信息,使用GetProcessMemoryInfo来获取内存统计信息,使用GetProcessIoCounters来获取IO信息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- win10安装scala-2.12.6.msi
- windows-server-2008-r2 – Win2008R2:暴力攻击预防
- windows-phone-8 – ‘System.Net.HttpWebRequest’不包含’
- Windows上的Python 3.4中的Tkinter在退出时不会将内部剪贴板
- 浏览器按Ctrl的所有快捷键
- winapi – 什么是fadvise / madvise等效于Windows?
- Windows – 从java代码中编程查找绝对的java.exe路径
- wix – 如何部署64位和32位Windows Installer软件包作为单一
- Windows Socket 最大连接数
- Windows Python解释器在Ctrl C上退出
- 如何判断文件是EXE还是DLL?
- windows-server-2008 – 缺少Get-ADComputer Ope
- windows-7 – 我应该在开发PC上安装哪个版本的Wi
- _asm int 3 软件中断
- windows – 内核模式和用户模式应用程序之间的通
- 如何将Turbo Pascal for Win32的I / O端口访问转
- windows – GetWindowLong() – 使用Creators Up
- windows-phone-8 – Windows phone 8模拟器无法接
- Windows 的 Oracle Data Access Components (ODA
- IIS 6.0(Windows Server 2003)备份的最佳实践?