




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上姓名:* 班级:2010级软件工程学号:* 日期:2012年10月19日一、 实验题目 Windows 2000进程的“一生”二、 实验目的1) 通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解Windows 2000进程的“一生”。2) 通过阅读和分析实验程序,学习创建进程、观察进程和终止进程的程序设计方法。二、 实验内容本实验分为三个小实验分别为实验1.1、实验1.2、实验1.3,每个小实验的实验题目、实验目的、实验内容、实验过程、回答问题、实验总结分别如下:一、 实验题目 实验1.1:创建进程二、 实验目的1)通
2、过创建进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解Windows 2000进程的“一生”。2) 通过阅读和分析实验程序,学习创建进程、观察进程和终止进程的程序设计方法。三、实验内容:1) 调试实验3-5中的程序。2) 观察并分析程序。四、实验过程及结果:步骤1:登录进入Windows 2000 Professional。步骤2:在“开始”菜单中单击“程序”-“Microsoft Visual Studio 6.0”“Microsoft Visual C+ 6.0”命令,进入Visual C+窗口。步骤3:在工具栏单击“打开”按钮,在“打开”对话框中找到并打开实验源程序3-5.c
3、pp。步骤4:单击“Build”菜单中的“Compile 3-5.cpp”命令编辑3-5.cpp步骤5:编译完成后,单击“Build”菜单中的“Build 3-5.exe”命令,建立3-5.exe可执行文件。步骤6:在工具栏单击“Execute Program”(执行程序) 按钮,或者按Ctrl + F5键,或者单击“Build”菜单中的“Execute 3-5.exe”命令,执行3-5.exe程序。步骤7:按Ctrl + S键可暂停程序的执行,按Ctrl + Pause (Break) 键可终止程序的执行。运行结果分析:答:程序的运行结果如下图所示:图一图二分析运行结果:创建标志参数CREA
4、TE_NEW_CONSOLE指示新进程分配它自己的控制台,所以在运行程序时,在任务栏上产生许多活动标记,如图一所示,一共产生了25个窗口,即创建了25个新进程。然后该克隆进程的创建方法关闭传递过来的句柄并返回main() 函数。在关闭程序之前,每一进程的执行主线程暂停一下,以便让用户看到其中的至少一个窗口。利用GetCurrentProcessId()函数获得进程的ID号,并输出。五、回答问题:1)(结合背景知识回答)该程序中使用的CreateProcess() API函数,此函数的大多数参数都可取缺省值,但是创建标志参数使用了:CREATE_NEW_CONSOLE_标志,指示新进程分配它自己
5、的控制台,这使得运行示例程序时,在任务栏上产生许多活动标记。然后该克隆进程的创建方法关闭传递过来的句柄并返回main() 函数。在关闭程序之前,每一进程的执行主线程暂停一下,以便让用户看到其中的至少一个窗口。2)CreateProcess() 函数有_10_个核心参数?本实验程序中设置的各个参数的值是:参数名称使用目的设置的各个参数的值LPCTSTR lpApplivationName全部或部分地指明包括可执行代码的EXE文件的文件名szFilenameLPCTSTR lpCommandLine向可执行文件发送的参数szCmdLineLPSECURIITY_ATTRIBUTES lpProce
6、ssAttributes返回进程句柄的安全属性。主要指明这一句柄是否应该由其他子进程所继承NULLLPSECURIITY_ATTRIBUTES lpThreadAttributes返回进程的主线程的句柄的安全属性NULLBOOL bInheritHandle一种标志,告诉系统允许新进程继承创建者进程的句柄FALSEDWORD dwCreationFlage特殊的创建标志 (如CREATE_SUSPENDED) 的位标记CREATE_NEW_CONSOLELPVOID lpEnvironment向新进程发送的一套环境变量;如为null值则发送调用者环境NULLLPCTSTR lpCurrentD
7、irectory新进程的启动目录NULLSTARTUPINFO lpStartupInfoSTARTUPINFO结构,包括新进程的输入和输出配置的详情&siLPPROCESS_INFORMATION lpProcessInformation调用的结果块;发送新应用程序的进程和主线程的句柄和ID&pi3)部分程序在Visual C+环境完成编译、链接之后,还可以在Windows 2000的“命令提示符”状态下尝试执行该程序,看看与在可视化界面下运行的结果有没有不同?为什么?答:在命令提示符下运行结果如下所示,与在可视化界面下运行结果是一样的。原因:六、实验总结经过本次实验,学习了
8、进程创建的方法,CreateProcess()的一些用法,它的10个参数的含义等等,在做实验的过程中遇到了以下问题:修改代码后,编译连接都没有问题,但运行时程序一直不停止,怎么关也关不掉程序,只能关机。解决方法是:去上机时电脑上有一个程序,跟我自己修改后的程序代码一样的,但运行后可以自动停止。现在仍不明白为什么原来的一样的代码运行后停止不了,周围很多同学也遇到了同样的问题。在main()中的代码if (argc> 1) / 从第二个参数中提取克隆ID:sscanf(argv1 , "%d" , &nClone) ; 看不懂,不知道是怎么获得参数nClone的。
9、询问了周围的同学及学长,但问题仍未解决······一开始不知道进程的ID号具体是什么含义,但经过查找资料了解到:操作系统通过进程ID来标识一个进程,进程ID是进程的唯一标识,在任务管理器中点击进程后点击查看,点击选择列,在PID前面勾选,就会显示出每个进程的ID号了。一、实验题目实验1.2:正在运行的进程二、实验目的1) 通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解Windows 2000进程的“一生”。2) 通过阅读和分析实验程序,学习创建进程、观察进程和终止进程的程序设计方法。
10、三、实验内容:1) 调试实验3-6中的程序。2) 观察并分析程序。四、实验过程及结果:步骤1:在Visual C+ 窗口的工具栏中单击“打开”按钮,在“打开”对话框中找到并打开实验源程序3-6.cpp。步骤2:单击“Build”菜单中的“Compile 3-6.cpp”命令,再单击“是”按钮确认。系统对3-6.cpp进行编译。步骤3:编译完成后,单击“Build”菜单中的“Build 3-6.exe”命令,建立3-6.exe可执行文件。步骤4:在工具栏单击“Execute Program” (执行程序) 按钮,执行3-6.exe程序。步骤5:单击Ctrl + Alt + Del键,进入“Win
11、dows任务管理器”,在“应用程序”选项卡中右键单击“3-6”任务,在快捷菜单中选择“转到进程”命令。在“Windows任务管理器”的“进程”选项卡中,与“3-6”任务对应的进程映像名称是 (为什么?) :答:对应的进程映像名称是VCSPAWN.exe,这是因为Windows 7 的兼容性问题,非得用VCSPAWN.EXE来启动PE格式的文件。_右键单击该进程名,在快捷菜单中选择“设置优先级”命令,可以调整该进程的优先级,如设置为“高”后重新运行3-6.exe程序,屏幕显示有变化吗?为什么?答:只有进程的ID号变了,其他没有变化,因为程序的输出语句是以下语句:std : cout<<
12、; "Process ID: "<<dwIdThis<<", requires OS: " <<wMajorReq<<wMinorReq<<std : endl ;std : cout<< "Running on OS:" <<osvix.dwMajorVersion<<"."<<osvix.dwMinorVersion<<std : endl;std:cout<< "Tas
13、k Manager should now indicate this " "process is high priority."<<std : endl;即输出进程的ID号、进程和报告所需的版本、版本信息和报告,出了进程的ID号会变化外,无论怎么设置优先级,输出都不会发生变化。因为是随机获取进程,所以进程的ID号几乎每次运行都会发生变化。另外,如果是windows2000系统,程序也利用SetPriorityClass()函数将该进程的优先级设为了High。设置优先级为高后程序运行如下:描述运行结果:答:程序运行结果的截图如下所示:运行结果显示,该进程
14、的ID号为3148,该进程和报告所需的OS版本是10,运行的操作系统版本是6.1。该进程被设置成了高优先级。_五、回答问题:1)分析清单3-6中的程序,简述该程序是如何获得当前的PID和所需的进程版本信息?答:利用GetCurrentProcessId()API函数来获得当前的PID,与GetCurrentProcess() 相似,对该函数的调用不能失败,但返回的PID在整个系统中都可使用。通过GetProcessVersion()函数获得这一进程和报告所需的版本信息。2)在本程序中用到了哪些主要Windows API函数?答:GetCurrentProcessId()API函数、GetPro
15、cessVersion()API函数、GetVersionEx()函数、GetCurrentProcess()函数、SetPriorityClass()函数六、实验总结通过该实验学习了获得运行进程和操作系统的版本信息,怎么改变进程优先级等,遇到了一些小的问题,都通过自己上网查资料或者询问周围同学解决了,但对于此程序仍存在以下疑问:该程序为什么没有让输出进程的优先级?这样通过在任务管理器中更改进程优先级后输出结果会有变化。除了前面输出的进程ID号,程序输出所需OS版本和运行的OS版本都不会变化(不变化电脑的情况下),还有最后输出的明明是一条语句,不会变化,再怎么改变进程优先级,程序输出都会是&q
16、uot;Task Manager should now indicate this " "process is high priority.",不明白问题为什么那样问?一、实验题目:实验1.3:终止程序二、实验目的:1) 通过观察终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解Windows 2000进程的“一生”。2) 通过阅读和分析实验程序,学习观察进程终止的程序设计方法。三、实验内容:1) 调试实验3-7中的程序。2) 观察并分析程序。四、实验过程及结果:步骤1:在Visual C+ 窗口的工具栏中单击“打开”按钮,在“打开”对话框中找到并打开实验源程序3-7.cpp。步骤2:单击“Build”菜单中的“Compile 3-7.cpp”命令,再单击“是”按钮确认。系统对3-7.cpp进行编译。步骤3:编译完成后,单击“Build”菜单中的“Build 3-7.exe”命令,建立3-7.exe可执行文件。步骤4:在工具栏单击“Execute Program”按钮,执行3-7.exe程序。查看运行结果。描述运行结果答:运行结果如下图所示:结果描述:首先显示两个进程窗口,一个父进程创建了一个子进程,子进程等待终止,子窗口显示5秒后终止自身。_五、回答问题:Windows所创建的每个进程都是以调用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年党章党史党建知识竞赛题库100题及答案(四)
- DB36-T1596-2022-绿色食品稻鳅生产技术规程-江西省
- 财务成本管理中的绩效反馈机制试题及答案
- 团章考试题库及答案2024年版
- 护理质控工作实施要点
- 螺纹的基础知识
- 放射医学影像图文介绍
- 保教知识与能力(幼儿园)2025年教师资格证真题密卷实战演练解析
- 2025年教师招聘音乐学科乐理知识专项卷(易错题型解析)附五线谱视唱题
- 常见错误医嘱护理要点解析
- 2025-2030中国海运拼箱行业市场发展现状及竞争格局与投资前景研究报告
- 2025年三片式球阀项目建议书
- 法院出庭授权委托书
- 2025年山东出版集团有限公司山东出版传媒股份有限公司招聘(192名)笔试参考题库附带答案详解
- 2024年浙江省海盐县事业单位公开招聘医务工作者笔试题带答案
- 江西省南昌市2025年中考语文一调试卷(含答案)
- 肠内营养护理
- 高房子与矮房子的比较与思考
- 2025年平面设计师专业能力测试卷:平面设计作品集制作与展示策略分析技巧分析试题
- 2025中国临床肿瘤学会CSCO非小细胞肺癌诊疗指南要点解读课件
- 同意开票协议书范本
评论
0/150
提交评论