操作系统实验报告4
- 格式:doc
- 大小:214.00 KB
- 文档页数:13
《操作系统》实验报告
实验序号: 4 实验项目名称:进程控制
Printf(“child Complete”);
CloseHandle(pi.hProcess);
CloseHandle(pi hThread);
﹜
修改后:
#include
#include
int main(VOID)
{
STARTUPINFO si;
PROCESS_INFORMA TION pi;
ZeroMemory(&si,sizeof(si));
si.cb=sizeof(si);
ZeroMemory(&pi,sizeof(pi));
if(!CreateProcess(NULL,
"c:\\WINDOWS\\system32\\mspaint.exe",
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,&pi))
{
fprintf(stderr,"Creat Process Failed");
return -1;
}
WaitForSingleObject(pi.hProcess,INFINITE);
printf("child Complete");
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
在“命令提示符”窗口运行CL命令产生可执行程序4-1.exe:C:\ >CL 4-1.cpp
实验任务:写出程序的运行结果。
4.正在运行的进程
(2)、编程二下面给出了一个使用进程和操作系统版本信息应用程序(文件名为4-5.cpp)。它利用进程信息查询的API函数GetProcessVersion()与GetVersionEx()的共同作用。确定运行进程的操作系统版本号。阅读该程序并完成实验任务。
#include
#include
修改后:
#include
#include
//利用进程和操作系统的版本信息的简单示例
void main()
{
//提取这个进程的ID号
DWORD dwIdThis=::GetCurrentProcessId();
//获得这一进程和报告所需的版本,也可以发送0以便指明这一进程DWORD dwVerReq=::GetProcessVersion(dwIdThis);
WORD wMajorReq=((WORD)dwVerReq>16);
WORD wMinorReq=((WORD)dwVerReq&0xffff);
std::cout<<"Process ID:"< <<",requires OS:"< //设置版本信息的数据结构,以便保存操作系统的版本信息OSVERSIONINFOEX osvix; ::ZeroMemory(&osvix,sizeof(osvix)); osvix.dwOSVersionInfoSize=sizeof(osvix); //提取版本信息和报告 ::GetVersionEx(reinterpret_cast < //如果是NTS(Windows2000)系统,则提高其优先权 if(osvix.dwPlatformId==VER_PLATFORM_WIN32_NT&& osvix.dwMajorVersion>=5) { //改变优先级 ::SetPriorityClass( ::GetCurrentProcess(), //利用这一进程 HIGH_PRIORITY_CLASS); //改变为high //报告给用户 std::cout<<"Task Manager should now now indicate this" "process is high priority."< } } 实验参考:①在Visual C++窗口的工具栏中单击“打开”按钮,在“打开“对话框 中找到并打开4-2.cpp源程序。 ②单击Build菜单中的Compile 4-2.cpp命令,再单击“是”按钮确认。系统对4-2.cpp 源程序进行编译。 ③编译完成后,单击Build菜单中的Build 4-2.exe命令,建立4-2.exe可执行文件。 ④在工具栏单击Execute Program(执行程序)按钮,执行4-2.exe程序。 实验任务:写出程序运行后的以下几项结果。 当前PID信息1628 。 当前操作系统版本Running on OS:5.1 。 系统提示信息Task Manager should now now indicate thisprocess is high priority 。 5、终止进程 (3)编程三下面给出了一个终止进程的应用程序(文件名为4-3.cpp),它先创建一个子进程,然后命令它发出“自杀弹”互斥体去终止自身的运行。阅读该程序并完成