c – 如何获取当前进程的作业对象(如果有)?

前端之家收集整理的这篇文章主要介绍了c – 如何获取当前进程的作业对象(如果有)?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Windows Job Objects的上下文中,如何获取当前进程的作业对象(如果它在作业对象中)? IsProcessInJob函数允许我测试给定进程(例如当前进程)是否在给定(或任何)作业中 – 但它不会产生匹配作业的句柄.

解决方法

如果您只想查找正在运行的配额/限制,或者枚举作业中的所有其他进程,则无需获取当前进程的Job对象.

您可以使用NULL调用QueryInformationJobObject,这将是当前进程的Job对象.

> QueryInformationJobObject:http://msdn.microsoft.com/en-us/library/ms684925(VS.85).aspx
>工作对象:http://msdn.microsoft.com/en-us/library/ms684161(VS.85).aspx

要回答具体问题,请致电IsProcessInJob,了解您是否在工作中.

您可以通过将NULL传递给QueryInformationJobObject来找到有关Job的所有内容

您的子进程将自动继承您的作业,除非您传递CREATE_BREAKAWAY_FROM_JOB且作业已设置JOB_OBJECT_LIMIT_BREAKAWAY_OK或JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK.在这些情况下,您可以根据需要将流程分配给新工作.

因此,在不知道句柄的情况下,您可以找到当前作业的所有内容,并在当前作业中分配子进程,或者如果您有权限,则可以在没有当前作业的情况下进行分配.即你可以做几乎手柄允许你做的所有事情.

唯一的例外是将其复制到另一个兄弟进程.如果您需要这样做,您必须让父进程以某种方式向您传递句柄值.

猜你在找的C&C++相关文章