我想使用具有内存限制的Process启动应用程序。我使用kernel32.dll中的AssignProcessToJobObject方法来完成它。我尝试启动应用程序,消耗10 MB内存,内存限制为1 MB。但是在启动后,我看到一个启动应用程序错误的对话窗口。我怎么处理呢?
答案 0 :(得分:3)
MSDN文章Job Limits and Notifications详细说明了如何获取超出限制的通知。
请注意,此通知不会杀死您自己必须执行的过程。由于该进程被您的主管程序杀死,而不是受资源限制,因此Windows不会弹出您试图避免的对话框。
如果您确实使用导致立即终止进程的“硬”限制,您仍然可以检测到触发了资源限制。
作业对象记录其所有关联流程的基本会计信息,包括已终止的流程。要检索此会计信息,请使用
QueryInformationJobObject
功能。
但是你不会避免操作系统提供的对话框限制杀死进程。无论如何,这种会计似乎不适用于内存限制。所以你应该使用通知方案。