我想在C或C ++中创建一个必须监视某些特定进程的应用程序。我怎样才能在C中实现它?
答案 0 :(得分:2)
你说你必须要“管理一些特定的过程”。如果应用程序启动了进程,则可以从传递给CreateProcess函数的PROCESS_INFORMATION结构(字段hProcess)中提取进程句柄。如果要以某种不同的方式启动要跟踪的进程,则需要进程'ID(PID),并将其用作OpenProcess的第三个参数以获取句柄。因此,您可以使用WaitForSingleObject或WaitForMultipleObjects函数来等待进程完成。 (可选)您可以使用GetExitCodeProcess函数获取进程的退出代码。 应用程序可以通过其他方式启动新进程(例如通过_system()库函数),但我强烈建议直接在代码中使用CreateProcess,因为您可以完全控制子进程的行为(例如,您可以选择优先级,传递stdin / stdout / stderr句柄,决定启动窗口的特征......)。
建议的例子: http://msdn.microsoft.com/en-us/library/ms682512%28VS.85%29.aspx
答案 1 :(得分:1)
您在Windows中使用CreateProcess() function启动了一个过程。它将一个HANDLE返回给PROCESS_INFORMATION.hProcess中的进程。该过程将在进程终止时发出信号,以便您跟踪其生命周期。使用WaitForSingleObject()或WaitForMultipleObjects()来执行此操作。有一个可用的代码示例here...
答案 2 :(得分:0)
在你自己编写之前,你看过Process Monitor v2.8吗?
Process Monitor是一种先进的 显示的Windows监视工具 实时文件系统,注册表和 流程/主题活动。它结合了两个遗产的功能 Sysinternals工具,Filemon和 Regmon,并添加了一个广泛的列表 增强包括丰富和 非破坏性过滤, 综合事件属性等 会话ID和用户名,可靠 流程信息,完整线程 具有集成符号支持的堆栈 对于每个操作,同时进行 记录到文件等等。
答案 3 :(得分:0)