《操作系统实验报告4》由会员分享,可在线阅读,更多相关《操作系统实验报告4(17页珍藏版)》请在金锄头文库上搜索。
1、操作系统实验报告实验序号:4实验项目名称:进程控制学号1207122219姓名邝沃佳实验地点1-418指导教师李远敏专业、班实验时间软金二班2014/10/21实验目的及要求(1) 通过对 WindowsXP进行编程,来熟悉和了解系统。(2) 通过分析程序,来了解进程的创建、终止。二、实验设备(环境)及要求(1) 一台WindowsXP操作系统的计算机。(2) 计算机装有 Microsoft Visual Studio C+6.0 专业版或企业版。(3) CreateProcess ()调用:创建一个进程。(4) ExitProcess ()调用:终止一个进程。三、实验内容与步骤(1)编程一
2、利用CreateProcess()函数创建一个子进程并且装入画图程序(mspaint.exe)。阅读该程序,完成实验任务。源程序如下:# in clude # in clude int ma in (VOID) STARTUPINFO si;PROCESS INFORMA TION pi;ZeroMemory (&si,sizeof(si);Si.cb=sizeof(si);ZeroMemory (&pi,sizeof(pi);if(!CreateProcess(NULL,c: WINDOWSsystem32 mspaint.exe ”,NULL,NULL,FALSE,0,NULL,NULL,
3、&si,&pi) fprintf(stderr, Creat Process Failed);return 1;WaitForSi nqleObject(pi.hProcess,INFINITE);Printf( “hild Complete ”); CloseHa ndle(pi.hProcess); CloseHandle(pi hThread);III globe! mernbm fmalnirliiLluduttiinr.liirir int ndin(uaiD)STAR1JP1HFO El;PROCESS.NFDHHAT iih pl:(fl);si .cii-sizPDf(5i;Z
4、roManuryf411 ti2uof (pi);i i I fCreatelrnce55 HULI r1MIp din t. exiTHUI I ,NDLLPFAI 1 .修改后:0,#in elude #i nclude int mai n(VOID) STARTUPINFO si;PROCESS_INFORMA TION pi; ZeroMemory (& si,sizeof(si); si.cb=sizeof(si);ZeroMemory (&pi,sizeof(pi);if(!CreateProcess(NULL,c:WINDOWSsystem32mspai nt.exe,NULL,
5、NULL,FALSE, 0,NULL,NULL,&si, &pi)fprin tf(stderr,Creat Process Failed); return -1;WaitForSi ngleObject(pi.hProcess,INFINITE);prin tf(child Complete);CloseHa ndle(pi.hProcess);CloseHa ndle(pi.hThread);在命令提示符窗口运行 CL命令产生可执行程序4-1.exe:C: CL 4-1.cpp:cd testC:c1-Eppnicrosoft 72 bit C/C* Optinicing Conpilct
6、- Ueraion 12 .06.0166 for ft0x6& Cupriyhl HlvrusufL Curp 丄984-l?9. All rlyhls resErucil.test.cpptest*cpp27) : warning C?15: JmainJ : not all control paths retuin a value Microsoft 199-19ft . Al 1 i*iQhts *f*fff.Zoatitcit.exeLl* ubj:test _实验任务:写出程序的运行结果。4.正在运行的进程(2 )、编程二 下面给出了一个使用进程和操作系统版本信息应用程序(文件名为
7、4-5.cpp)。它利用进程信息查询的API函数 GetProcessVersion() 与GetVersionEx()的共同作用。确定运行进程的操作系统版本号。阅读该程序并完成实验任务。#in clude#in clude/利用进程和操作系统的版本信息的简单示例Void mai n()/提取这个进程的ID号DWORD dwldThis=:GetCurre ntProcessld();获得这一进程和报告所需的版本,也可以发送0以便指明这一进程DWORD dwVerReq=:GetProcessVersio n(dwldThis);WORD wMajorReq=:(WORD)dwVerReq16
8、);WORD wMi norReq=:(WORD)dwVerReq & oxfff); std:cout ” Process ID: ” dwldThis ” ,requires OS: ” wMajorReq wMinorReq std:endl;/设置版本信息的数据结构,以便保存操作系统的版本信息OSVERSIONINFOEX osvix;:ZeroMemory(&osvix,sizeof(osvix);Osvix.dwOSVersio nIn foSize=sizeof(osvix);/提取版本信息和报告:GetVersio nEx(rei nterpret cast(&osvix);S
9、td:cout ” Running on OS: ” osvix.dwMajorVersion ” . osvix.dwM ino rVers ion =5/改变优先级:SerPriorityClass(:GetCurre ntProcess()利用这一进程HIGH PRIORITY CLASS);改变为 high/报告给用户Std:cout Task Manager should now now indicate this ” process is high priority. std:endl;HncludeWiricl udv利用进程和换作系统的版本信息的简单示例void maln()1
10、6);WORD wttinorRe(|=(UORD)(jwUerReq&axfFfF);std:coutProcess ID:dwIdThisllfrequires DS:MuHajorHeqwHinorRegCstd:endl;设置板本信息的数据结构,以便保存操年系统的版本信息修改后:#i nclude#in clude/利用进程和操作系统的版本信息的简单示例void mai n()提取这个进程的ID号DWORD dwldThis=:GetCurre ntProcessld();获得这一进程和报告所需的版本,也可以发送0以便指明这一进程DWORD dwVerReq=:GetProcessVe
11、rsio n(dwldThis);WORD wMajorReq=(WORD)dwVerReq16);WORD wMi no rReq=(WORD)dwVerReq&0 xffff);std:coutProcess ID:dwIdThis,requires OS:wMajorReqwM ino rReqstd:e ndl;/设置版本信息的数据结构,以便保存操作系统的版本信息OSVERSIONINFOEX osvix;:ZeroMemory(&osvix,sizeof(osvix);osvix.dwOSVersio nIn foSize=sizeof(osvix);提取版本信息和报告:GetVer
12、sio nEx(rei nterpret_cast(&osvix);std:coutR unning on OS:osvix.dwMajorVers ion .osvix.dwMi no rVersio n =5)改变优先级:SetPriorityClass(:GetCurre ntProcess(),/ 利用这一进程HIGH_PRIORITY_CLASS);/改变为 high报告给用户std:coutTask Man ager should now now in dicate thisprocess is high priority.std:e ndl;实验参考:在Visual C+窗口的工具栏中单击“打开”按钮,在“打开“对话框中找到并打开4-2.cpp源程序。4-2.cpp 单击Build菜单中的Compile 4-2.cpp命令,再单击“是”按钮确认。系统对 源程序进行编译。 编译完成后,单击Build菜单中的Build4-2.exe命令,建立4-2.exe可执行