日韩欧美人妻无码精品白浆,www.大香蕉久久网,狠狠的日狠狠的操,日本好好热在线观看

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

Windows系統(tǒng)編程-強(qiáng)制結(jié)束進(jìn)程

admin
2025年3月27日 21:42 本文熱度 879

進(jìn)程有啟動就有終止,通過CreateProcess函數(shù)可以啟動一個新的子進(jìn)程,但是如何終結(jié)子進(jìn)程呢?主要有四種方法:

通過主線程的入口函數(shù)(main函數(shù)、WinMain函數(shù))的return關(guān)鍵字終止進(jìn)程

一個應(yīng)用程序只有一個入口函數(shù),對于控制臺來說是main函數(shù),對于GUI程序來說這個入口函數(shù)一般是WinMain。入口函數(shù)通過return關(guān)鍵字返回或者程序自上而下執(zhí)行完成之后,進(jìn)程可以自動終止,進(jìn)程相關(guān)的所有資源都會被操作清理。這也是開發(fā)中最常用的進(jìn)程終止方法,也是強(qiáng)烈推薦大家使用的終止進(jìn)程的方式。

那么如何能獲取到子進(jìn)程的返回值呢,以下面代碼為例,這是一個最簡單的控制臺程序,它返回-3。

#include <iostream>
#include <Windows.h>
int main()
{
return -3;
}

首先演示在cmd控制臺或者bat腳本中如何獲取該進(jìn)程的最終返回值:通過echo %errorlevel%命令可以獲取到上一個cmd命令的返回值。如下:


在程序中獲取子進(jìn)程的返回值,CreateProcess函數(shù)創(chuàng)建子進(jìn)程成功之后,主進(jìn)程可以拿到子進(jìn)程的句柄。通過調(diào)用GetExitCodeProcess函數(shù)可以獲取到某個進(jìn)程的返回值,函數(shù)原型如下:

BOOL GetExitCodeProcess(
  HANDLE  hProcess,//子進(jìn)程句柄
  LPDWORD lpExitCode//用于接受子進(jìn)程的返回值
)
;

請看以下代碼:

#include <iostream>
#include <Windows.h>
int main()
{
//即將啟動的exe程序路徑
 LPCWSTR lpApplicationName = L"D:\\project\\ConsoleApp1\\x64\\Debug\\NewApp.exe";

// 定義啟動信息和進(jìn)程信息結(jié)構(gòu)
 STARTUPINFOW si;
 PROCESS_INFORMATION pi;

// 初始化啟動信息結(jié)構(gòu)
ZeroMemory(&si, sizeof(si));
 si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));

 BOOL ret = CreateProcess(lpApplicationName,
NULL,
NULL,
NULL,
 FALSE,
 CREATE_NEW_CONSOLE,
NULL,
NULL,
 &si,
 &pi);
// 等待進(jìn)程結(jié)束
WaitForSingleObject(pi.hProcess, INFINITE);

// 獲取子進(jìn)程的返回值
 DWORD exitCode;
GetExitCodeProcess(pi.hProcess, &exitCode);
// 將無符號整數(shù)轉(zhuǎn)換為有符號整數(shù)
int signedExitCode = static_cast<int>(exitCode);
 std::cout << "Child process exited with code: " << signedExitCode << std::endl;
return0;
}

主程序在創(chuàng)建子進(jìn)程之后,首先調(diào)用WaitForSingleObject等待子進(jìn)程結(jié)果,然后調(diào)用GetExitCodeProcess函數(shù)獲取子進(jìn)程的返回值。但是這里注意,如果子進(jìn)程返回0或者正數(shù)是沒問題的,因?yàn)?/span>DWORD是一個無符號的整數(shù)類型,但是如果子進(jìn)程返回負(fù)數(shù)的話,就需要我們手動將無符號整數(shù)轉(zhuǎn)換為有符號整數(shù)。最后執(zhí)行結(jié)果如下,可以看到正常獲取到了子進(jìn)程的返回值。


通過ExitProcess函數(shù)終止進(jìn)程

ExitProcess函數(shù)可以終止進(jìn)程,并且會設(shè)置一個進(jìn)程的返回值。該函數(shù)原型只有一個參數(shù),就是進(jìn)程的返回值:

void ExitProcess(
  UINT uExitCode //進(jìn)程返回值
)
;

注意:調(diào)用ExitProcess之后,進(jìn)程會直接退出,ExitProcess之后的函數(shù)都不會繼續(xù)執(zhí)行,在程序中,一定要盡量避免直接調(diào)用這個函數(shù),我們以下面的代碼為例:

#include <iostream>
#include <Windows.h>
int main(int argc, char** argv)
{
ExitProcess(-4);
 std::cout << "Hello World!" << std::endl;
return -3;
}

當(dāng)我們雙擊編譯好的控制臺程序之后,會發(fā)現(xiàn)hello World!并沒有被執(zhí)行,并且成功的返回了-4,效果如下:


通過TerminateProcess函數(shù)終止進(jìn)程

我們首先來修改子進(jìn)程程序,通過一個無限while循環(huán)使進(jìn)程永遠(yuǎn)不會退出:

#include <iostream>
#include <Windows.h>
int main(int argc, char** argv)
{
while (true) {
 std::cout << "Hello World!" << std::endl;
Sleep(1000);
 }
}

然后按照上面的代碼,創(chuàng)建完子進(jìn)程之后,我們可以調(diào)用TerminateProcess函數(shù)直接終止子進(jìn)程。

BOOL ret = CreateProcess(lpApplicationName,
NULL,
NULL,
NULL,
 FALSE,
 CREATE_NEW_CONSOLE,
NULL,
NULL,
 &si,
 &pi);

TerminateProcess(pi.hProcess, -3);

TerminateProcess函數(shù)非常的簡單粗暴,會強(qiáng)制將子進(jìn)程終結(jié),也應(yīng)該盡量避免直接調(diào)用該函數(shù)終止進(jìn)程,只有在其他辦法都無法強(qiáng)制終結(jié)子進(jìn)程的情況下,才可以使用該函數(shù)強(qiáng)制終結(jié)進(jìn)程。


閱讀原文:原文鏈接


該文章在 2025/3/28 11:31:11 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊、財務(wù)費(fèi)用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

国产有码| 亚洲婷婷五月天小说一区二区| 小姑娘后入电影| 无吗后入少妇AV影片| 欧美日韩一,二,三,区| 欧美V自拍V偷拍V| 无码一区二在| 欧美一区精品免费| 久久不卡高清免费| 亚洲福利免费观看| 亚洲欧美日韩中文一区| 国产一区,二区| 69堂福利区| 欧美精品成人网站免费| 色综合久久综合一区| 三级网站91短视频| 2020年久久,精品一级黄色片| 轮理片18禁教学在线播放| AV五十六十路相奸| 欧美三日本三级少妇 | 人人澡人人妻人人爽人人蜜桃| 久久免费影院| 青青操在线视频青青| 日韩欧美国产一区二区不卡在线观看| 69专区视频| 哦美网站在线| 亚洲福利自慰| 国产免费高清无码| 精品熟女凹凸| 日本精品极品精品在线| 国产经典人妻3p| silk122中文字幕一区二区| 天堂网性爱老人| yy伦理男人的天堂| 丁香五月天成人社区男人的天堂| 成人AV久久久| 亚洲美女撒尿在线肏屄视频| AV久久一欧的| 天天日日干干美女| 午夜婷电影| 亚洲高清成人AV|