windows作业job介绍

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、作业job是什么?
  • 二、使用步骤
    • 1.代码示例
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:
winapi网站:
https://learn.microsoft.com/en-us/windows/win32/api/


提示:以下是本篇文章正文内容,下面案例可供参考

一、作业job是什么?

作业(Job)基本概念
Windows作业(Job)对象是一种进程管理机制,允许将一组进程作为单个单元进行管理。它主要用于:

限制进程资源使用(CPU/内存等)
控制进程安全性
确保进程树同步终止
监控进程运行状态

作业job可以看作是进程池

核心API函数

#include <windows.h>
#include <stdio.h>
主要API:
CreateJobObject - 创建作业对象
AssignProcessToJobObject - 将进程分配到作业
SetInformationJobObject - 设置作业限制
TerminateJobObject - 终止作业内所有进程
IsProcessInJob 判断是否已加入job

WINBASEAPI
HANDLE
WINAPI
CreateJobObjectW(_In_opt_ LPSECURITY_ATTRIBUTES lpJobAttributes, //安全属性_In_opt_ LPCWSTR lpName	//名字);WINBASEAPI
BOOL
WINAPI
SetInformationJobObject(_In_ HANDLE hJob,	//句柄_In_ JOBOBJECTINFOCLASS JobObjectInformationClass, 	//job限制枚举定义_In_reads_bytes_(cbJobObjectInformationLength) LPVOID lpJobObjectInformation, //作业限制结构_In_ DWORD cbJobObjectInformationLength //作业限制结构长度);WINBASEAPI
BOOL
WINAPI
IsProcessInJob(_In_ HANDLE ProcessHandle,_In_opt_ HANDLE JobHandle,_Out_ PBOOL Result);
WINBASEAPI
BOOL
WINAPI
AssignProcessToJobObject(_In_ HANDLE hJob,_In_ HANDLE hProcess);WINBASEAPI
BOOL
WINAPI
TerminateJobObject(_In_ HANDLE hJob,_In_ UINT uExitCode);WINBASEAPI
BOOL
WINAPI
SetInformationJobObject(_In_ HANDLE hJob,_In_ JOBOBJECTINFOCLASS JobObjectInformationClass,_In_reads_bytes_(cbJobObjectInformationLength) LPVOID lpJobObjectInformation,_In_ DWORD cbJobObjectInformationLength);

实际应用场景
批量任务管理:同时启动/终止一组相关进程
资源隔离:防止子进程消耗过多系统资源
安全沙箱:限制进程的操作能力
服务管理:确保服务进程及其子进程同步管理

注意事项
进程一旦加入作业就无法移除
作业内的进程创建的子进程会自动加入同一作业
需要Windows 2000及以上系统支持
调试时需注意作业限制可能导致进程异常终止

二、使用步骤

1.代码示例

代码如下(示例):

#include <windows.h>
#include <stdio.h>
#include <iostream>
#include <tchar.h>int main()
{std::cout << "Hello World!\n";HANDLE hJob;JOBOBJECT_EXTENDED_LIMIT_INFORMATION jobInfo = { 0 };hJob = CreateJobObject(NULL, TEXT("MySampleJob"));if (hJob == NULL) {printf("CreateJobObject failed (%d)\n", GetLastError());return -1;}// 2. 设置作业限制(此处限制内存为100MB)jobInfo.BasicLimitInformation.LimitFlags = JOB_OBJECT_LIMIT_PROCESS_MEMORY;jobInfo.ProcessMemoryLimit = 100 * 1024 * 1024; // 100MB if (!SetInformationJobObject(hJob,JobObjectExtendedLimitInformation,&jobInfo,sizeof(jobInfo))) {printf("SetInformationJobObject failed (%d)\n", GetLastError());CloseHandle(hJob);return -1;}// 3. 创建进程并分配到作业 STARTUPINFO si = { sizeof(si) };PROCESS_INFORMATION pi;wchar_t cmdLine[] = L"notepad.exe";if (!CreateProcess(NULL,cmdLine,NULL,NULL,FALSE,CREATE_SUSPENDED,NULL,NULL,&si,&pi)) {printf("CreateProcess failed (%d)\n", GetLastError());CloseHandle(hJob);return -1;}// 4. 分配进程到作业 if (!AssignProcessToJobObject(hJob, pi.hProcess)) {printf("AssignProcessToJobObject failed (%d)\n", GetLastError());TerminateProcess(pi.hProcess, 0);CloseHandle(pi.hProcess);CloseHandle(pi.hThread);CloseHandle(hJob);return -1;}// 5. 恢复进程执行 ResumeThread(pi.hThread);printf("Job created successfully with process ID: %d\n", pi.dwProcessId);// 清理句柄 CloseHandle(pi.hProcess);CloseHandle(pi.hThread);CloseHandle(hJob);return 0;
}

总结

介绍了windows下作业job的基础概念和使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/78207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ESG跨境电商如何为国内的跨境电商企业打开国外的市场

现在不管是国内还是国外&#xff0c;做电商的企业都非常的多&#xff0c;那么既然有这么多大电商公司&#xff0c;就要有为这些电商公司提供服务的公司&#xff0c;这就是ESG&#xff0c;它是专门为跨境电商服务的公司&#xff0c;那么这家公司的主要业务是什么呢&#xff1f;它…

龙虎榜——20250425

指数依然在震荡&#xff0c;等待方向选择&#xff0c;整体量能不搞但个股红多绿少。 2025年4月25日龙虎榜行业方向分析 一、核心主线方向 绿色电力&#xff08;政策驱动业绩弹性&#xff09; • 代表标的&#xff1a;华银电力&#xff08;绿电运营&#xff09;、西昌电力&…

大数据学习(112)-HIVE中的窗口函数

&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一…

【MySQL】MySQL索引与事务

目录 前言 1. 索引 &#xff08;index&#xff09; 1.1 概念 1.2 作用 1.3 使用场景 1.4 索引的相关操作 查看索引 创建索引 删除索引 2. 索引背后的数据结构 2.1 B树 2.2 B&#xff0b;树的特点 2.3 B&#xff0b;树的优势 3. 事务 3.1 为什么使用事务 3.2 事…

python21-循环小作业

课程&#xff1a;B站大学 记录python学习&#xff0c;直到学会基本的爬虫&#xff0c;使用python搭建接口自动化测试就算学会了&#xff0c;在进阶webui自动化&#xff0c;app自动化 循环语句小作业 for-in作业斐波那契 for 固定数值计算素数字符统计数字序列range 函数 水仙花…

深度学习小记(包括pytorch 还有一些神经网络架构)

这个是用来增加深度学习的知识面或者就是记录一些常用的命令,会不断的更新 import torchvision.transforms as transforms toPIL transforms.ToPILImage()#可以把tensor转换为Image类型的 imgtoPIL(img) #利用save就可以保存下来 img.save("/opt/data/private/stable_si…

Neo4j 可观测性最佳实践

Neo4j 介绍 Neo4j 是一款领先的图数据库管理系统&#xff0c;采用图数据模型来表示和存储数据。它以节点、关系和属性的形式组织数据&#xff0c;节点代表实体&#xff0c;关系表示节点间的连接&#xff0c;属性则为节点和关系附加信息。Neo4j 使用 Cypher 查询语言&#xff0…

算法训练营第三十天 | 动态规划 (三)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、01背包问题理论基础&#xff08;一&#xff09;动态规划五部曲确定dp数组以及下标的含义确定递推公式初始化dp数组确定遍历顺序 二、01背包问题理论基础&#…

玩机搞机基本常识-------小米OLED屏幕机型怎么设置为永不休眠_手机不息屏_保持亮屏功能 拒绝“烧屏” ?

前面在帮一位粉丝解决小米OLED机型在设置----锁屏下没有永不休眠的问题。在这里&#xff0c;大家要明白为什么有些小米机型有这个设置有的没有的原因。区分OLED 屏幕和 LCD屏幕的不同。从根本上拒绝烧屏问题。 OLED 屏幕的一些优缺点&#x1f49d;&#x1f49d;&#x1f49d; …

PostgreSQL使用LIKE右模糊没有走索引分析验证

建表&数据初始化可参考PostgreSQL 分区表——范围分区SQL实践 背景&#xff1a; 给t_common_work_order_log的handle_user_name新建索引后&#xff0c;使用LIKE右模糊匹配查询时&#xff0c;发现走的全表扫描 CREATE INDEX order_log_handle_user_name_index ON t_commo…

【vue】【element-plus】 el-date-picker使用cell-class-name进行标记,type=year不生效解决方法

typedete&#xff0c;自定义cell-class-name打标记效果如下&#xff1a; 相关代码&#xff1a; <el-date-pickerv-model"date":clearable"false":editable"false":cell-class-name"cellClassName"type"date"format&quo…

《Learning Langchain》阅读笔记8-RAG(4)在vector store中存储embbdings

什么是 vector store&#xff1f; 与专门用于存储结构化数据&#xff08;如 JSON 文档或符合关系型数据库模式的数据&#xff09;的传统数据库不同&#xff0c;vector stores处理的是非结构化数据&#xff0c;包括文本和图像。像传统数据库一样&#xff0c;vector stores也能执…

用api的方式调用本地下载好的大模型(以llama为例,不是ollama!!!)

目录 1、创建虚拟环境2、激活虚拟环境3、安装相关库4、编写脚本&#xff08;test.py&#xff09;调用脚本5、bash中测试通信完美结果 1、创建虚拟环境 conda create -n myenv python3.12 -y2、激活虚拟环境 conda activate myenv3、安装相关库 pip install vllm fastapi uvi…

算力网络(CFN)在跨校联合科研中的应用:安全性挑战与联邦调度实践

引言&#xff1a;科研协作的算力困境 上海交通大学与麻省理工学院联合开展的高能物理模拟实验&#xff0c;因算力资源分配不均导致部分节点连续72小时处于空转状态。这个典型案例揭示了当前跨机构科研协作的痛点&#xff1a;‌算力资源无法实现安全可信的细粒度共享‌。算力网…

高防IP+CDN组合:电商大促的“双保险”防护方案

引言 电商大促期间&#xff0c;平台流量呈爆发式增长&#xff0c;既要应对瞬时激增的访问量&#xff0c;又要防范黑客趁机发起的DDoS攻击、恶意爬虫等威胁。单一防护手段往往难以兼顾性能与安全&#xff0c;而高防IPCDN组合通过“流量清洗加速分发”的双重机制&#xff0c;为电…

# 构建词汇表:自然语言处理中的关键步骤

构建词汇表&#xff1a;自然语言处理中的关键步骤 在自然语言处理&#xff08;NLP&#xff09;任务中&#xff0c;词汇表&#xff08;Vocabulary&#xff09;是文本数据预处理的核心组件之一。它将文本中的单词或字符映射为数值索引&#xff0c;从而让计算机能够理解和处理语言…

SQL进阶知识:七、数据库设计

今天介绍下关于数据库设计的详细介绍&#xff0c;并结合MySQL数据库提供实际例子。 数据库设计是确保数据库能够高效、安全地存储和管理数据的关键环节。良好的数据库设计可以提高查询性能、减少数据冗余、确保数据完整性&#xff0c;并简化数据维护。以下是关于数据库设计的详…

python如何取消word中的缩进

在python-docx中&#xff0c;取消缩进可以通过将相应的缩进属性设置为None或0来实现。以下是取消不同类型缩进的方法&#xff1a; 取消左缩进 from docx import Documentdoc Document(existing_document.docx)for paragraph in doc.paragraphs:# 取消左缩进paragraph.paragr…

Docker拉取镜像代理配置实践与经验分享

Docker拉取镜像代理配置实践与经验分享 一、背景概述 在企业内网环境中&#xff0c;我们部署了多台用于测试与学习的服务器。近期&#xff0c;接到领导安排&#xff0c;需在其中一台服务器上通过Docker安装n8n应用程序。然而在实际操作过程中&#xff0c;遭遇Docker官方镜像库…

【数字图像处理】立体视觉基础(1)

成像 成像过程&#xff1a;三维空间坐标到二维图像坐标的变换 相机矩阵&#xff1a;建立三维到二维的投影关系 相机的使用步骤&#xff08;模型-视图变换&#xff09;&#xff1a; &#xff08;1&#xff09;视图变换 &#xff08;2&#xff09;模型变换 &#xff08;3&…