實(shí)驗(yàn)2:windows應(yīng)用程序基礎(chǔ)和進(jìn)程控制

實(shí)驗(yàn)2:windows應(yīng)用程序基礎(chǔ)和進(jìn)程控制

ID:34463148

大小:42.40 KB

頁數(shù):15頁

時(shí)間:2019-03-06

實(shí)驗(yàn)2:windows應(yīng)用程序基礎(chǔ)和進(jìn)程控制_第1頁
實(shí)驗(yàn)2:windows應(yīng)用程序基礎(chǔ)和進(jìn)程控制_第2頁
實(shí)驗(yàn)2:windows應(yīng)用程序基礎(chǔ)和進(jìn)程控制_第3頁
實(shí)驗(yàn)2:windows應(yīng)用程序基礎(chǔ)和進(jìn)程控制_第4頁
實(shí)驗(yàn)2:windows應(yīng)用程序基礎(chǔ)和進(jìn)程控制_第5頁
資源描述:

《實(shí)驗(yàn)2:windows應(yīng)用程序基礎(chǔ)和進(jìn)程控制》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫

1、實(shí)驗(yàn)二:Windows進(jìn)程控制1.實(shí)驗(yàn)?zāi)康拿總€進(jìn)程都有一個獨(dú)立的受到保護(hù)的地址空間,其他進(jìn)程不能訪問。一個進(jìn)程可以包含一個或更多的線程。進(jìn)程能夠在其內(nèi)部創(chuàng)建新的、獨(dú)立的線程,并且管理對象間的通信和同步。通過對Windows系統(tǒng)編程,進(jìn)一步熟悉操作系統(tǒng)的基本概念,較好地理解Windows操作系統(tǒng)的系統(tǒng)結(jié)構(gòu)和編程特點(diǎn)。2.進(jìn)程控制Windows所創(chuàng)建的每個進(jìn)程都從調(diào)用CreateProcess()API函數(shù)開始,該函數(shù)的任務(wù)是在對象管理器子系統(tǒng)內(nèi)初始化進(jìn)程對象。每一進(jìn)程都以調(diào)用ExitProcess()或Terminat

2、eProcess()API函數(shù)終止。通常應(yīng)用程序的框架負(fù)責(zé)調(diào)用ExitProcess()函數(shù)。對C++運(yùn)行庫來說,這一調(diào)用發(fā)生在應(yīng)用程序的main()函數(shù)返回之后,如果采用C運(yùn)行庫,則調(diào)用WinMain()函數(shù)。通過創(chuàng)建進(jìn)程、觀察正在運(yùn)行的進(jìn)程和終止進(jìn)程的程序設(shè)計(jì)和調(diào)試操作,進(jìn)一步熟悉操作系統(tǒng)的進(jìn)程概念,理解Windows進(jìn)程的生命周期。2.1進(jìn)程控制相關(guān)的API基本的Win32進(jìn)程管理函數(shù)是CreateProcess,它可以創(chuàng)建擁有單個線程的進(jìn)程。因?yàn)檫M(jìn)程需要代碼,所以有必要指定可執(zhí)行程序文件名作為CreatePr

3、ocess調(diào)用的一部分。CreateProcess有10個參數(shù)支持其靈活性和強(qiáng)大功能。該函數(shù)并不返回一個HANDLE,而是在一個結(jié)構(gòu)(在調(diào)用中指定)中返回表示進(jìn)程和線程的兩個句柄。2.1.1創(chuàng)建進(jìn)程CreateProcess()函數(shù)函數(shù)格式:BOOLCreateProcess(LPCTSTRlpApplicationName,LPTSTRlpCommandLine,LPSECURITY_ATTRIBUTESlpProcessAttributes,LPSECURITY_ATTRIBUTESlpThreadAttribu

4、tes,BOOLbInheritHandles,DWORDdwCreationFlags,LPVOIDlpEnvironment,LPCTSTRlpCurrentDirectory,LPSTRATUPINFOlpStartupInfo,LPPROCESS_INFORMATIONlpProcessInformation);參數(shù):(1)lpszApplicationName和lpCommandLine指定了新進(jìn)程將使用的可執(zhí)行文件和傳遞給新進(jìn)程的命令行字符串。lpszCommandLine可以設(shè)定CreateProces

5、s中用于創(chuàng)建新進(jìn)程的命令行。CreateProcess在解析lpszCommandLine字符串的時(shí)候,它先查看字符串中的第一個符號。如果它是一個可執(zhí)行文件名且不含有擴(kuò)展名,就假定它的擴(kuò)展名為EXE。CreateProcess將按照以下順序來搜索可執(zhí)行文件:1)含有調(diào)用進(jìn)程的EXE文件的目錄;2)調(diào)用進(jìn)程的當(dāng)前目錄;3)Windows系統(tǒng)目錄,該目錄由GetSystemDirectory函數(shù)得到;4)Windows目錄,該目錄由GetWindowsDirectory函數(shù)得到;5)列在PATH環(huán)境變量中的目錄。當(dāng)然,如

6、果文件名中包含完整的路徑,系統(tǒng)就使用完整路徑搜索可執(zhí)行文件。如果系統(tǒng)找到了可執(zhí)行文件,就創(chuàng)建一個新進(jìn)程,并為它生成一個4GB的地址空間,從而使可執(zhí)行文件的代碼和數(shù)據(jù)映射到這個地址空間。(2)lpProcessAttribute和lpThreadAttribute是指向進(jìn)程和線程安全屬性結(jié)構(gòu)的指針。當(dāng)用NULL表示時(shí),為默認(rèn)的安全性。(3)FInheritHandles表明新進(jìn)程是否繼承調(diào)用進(jìn)程的打開句柄的副本。繼承的句柄與原來的句柄具有相同屬性。(4)FdwCreate是幾個標(biāo)志的組合。其中包含以下幾個標(biāo)志:1)CR

7、EATE_SUSPENDED:新進(jìn)程的主線程創(chuàng)建時(shí)處于掛起狀態(tài),直到調(diào)用ResumeThread函數(shù)時(shí)才能運(yùn)行。2)DETACHED_PROCESS和CREATE_NEW_CONSOLE相互排斥,二者不能同時(shí)使用。第一個標(biāo)志是創(chuàng)建沒有控制臺的進(jìn)程,第二個標(biāo)志是創(chuàng)建新的有控制臺的進(jìn)程。如果二者都沒有設(shè)置,進(jìn)程將繼承父進(jìn)程的控制臺。3)CREATE_NEW_PROCESS_GROUP指定新進(jìn)程是新進(jìn)程組的根進(jìn)程。如果組中所有的進(jìn)程都共享同一控制臺,則它們都將接收控制臺的控制信號。(5)lpvEnvironment指向新進(jìn)

8、程的環(huán)境塊。如果此值為NULL,進(jìn)程會使用父進(jìn)程的環(huán)境塊。環(huán)境塊包含名稱和值字符串,如搜索路徑。(6)lpszCurDir指向新進(jìn)程的驅(qū)動器和目錄。若為NULL,將使用父進(jìn)程的工作目錄。(7)lpsiStartInfo指向新進(jìn)程的主窗口外觀和標(biāo)準(zhǔn)設(shè)備句柄。使用GetStartupInfo函數(shù)得到父進(jìn)程信息。(8)lpProcessInforma

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時(shí)可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。