实验 进程的描述与控制
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验2:进程的描述与控制2.4 实验内容与步骤
Windows所创建的每个进程都是以调用CreateProcess()API函数开始和以调用ExitProcess()或TerminateProcess()函数终止。
1、创建进程
本实验学习创建进程的基本框架。该程序要求启动自身,显示它的系统进程ID和它在进程列表中的位置。
步骤1:登录进入Windows 2000 Professional。
步骤2:在“开始”菜单中单击“程序”、“Microsoft Visual Studio 6.0”“Microsoft Visual C++ 6.0”,进入Visual C++窗口。
步骤3:在工具栏单击“新建”按钮,编写代码保存为2-1.cpp。
参考类和函数:windows.h、iostream、stdio.h、GetModuleFileName()、ZeroMemory()、CreateProcess()、GetCurrentProcess()。
步骤4:单击“Build”菜单中的“Compile 2-1.cpp”命令,对2-1.cpp 进行编译。
步骤5:编译完成后,单击“Build”菜单中的“Build 2-1.exe”命令,建立2-1.exe可执行文件。
操作能否正常进行,如果不行,原因是什么?
答: 操作能正常运行
步骤6:在工具栏单击“Execute program”按钮,或者按Ctrl+F5键,或者单击“Build”菜单中的“Execute 2-1.exe”命令,执行2-1.exe 程序。
步骤7:按Ctrl+S键可暂停程序的执行,按Ctrl+Pause(Break)键可终止程序的执行。
程序运行时结果如下:
创建了26个Clone ID为0-26的进程,最终结束后只留下第一个
2. 正在运行的进程
本实验用进程信息查询的API函数GetProcessVersion()与GetVersionEx(),确定运行进程的操作系统的版本号。
步骤1:在工具栏单击“新建”按钮,编写代码保存为2-2.cpp。
步骤2:单击“Build”菜单中的“Compile 2-2.cpp”命令,系统
对2-2.cpp进行编译。
步骤3:编译完成后,单击“Build”菜单中的“Build 2-2.exe”命令,建立2-2.exe可执行文件。
操作能否正常进行,如果不行,原因是什么?
答:操作能正常运行
步骤4:在工具栏单击“Execute program”按钮,执行2-2.exe程序。
程序运行时结果如下:
当前PID信息:1884,requires OS:00
当前操作系统版本:5.1
系统提示信息:Task Manager should now now indicate thisprocess is high priority.
除了改变进程的优先级以外,还可以对正在运行的进程执行几项
其他的操作,只要获得其进程句柄即可,SetProcessAffinityMask() API
函数允许开发人员将线程映射到处理器上;SetProcessAffinityBoost()
API可关闭前台应用程序优先级的提升;而SetProcessWorkingSet() API 可调节进程可用的非页面RAM的容量;还有一个只对当前进程可用的API函数,即SetProcessShutdownParameters(),可告诉系统如何终止该进程。
3. 终止进程
步骤1:在工具栏单击“新建”按钮,编写代码保存为2-3.cpp。
步骤2:单击“Build”菜单中的“Compile 2-3.cpp”命令,再单击“是”按钮确认,系统对2-3.cpp进行编译。
步骤3:编译完成后,单击“Build”菜单中的“Build 2-3.exe”命令,建立2-3.exe可执行文件。
操作能否正常进行,如果不行,原因是什么?
答:操作能正常运行
步骤4:在工具栏单击“Execute program”按钮,执行2-3.exe程序。
程序运行时结果如下:
2.5 实验总结
1.由于刚刚接触C++,对它不是很熟悉,使得实验进展很慢。
2. 编译程序时出错,Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/2-1.exe : fatal error LNK1120: 1 unresolved externals
执行link.exe时出错。经过检查发现,工程的存储路径与运行路径不一致,导致该错误。
2.6 实验评价(教师)