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.pswp.cn/pingmian/78207.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/78207.shtml
英文地址,請注明出處:http://en.pswp.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&…