进程的创建和终止.doc_第1页
进程的创建和终止.doc_第2页
进程的创建和终止.doc_第3页
进程的创建和终止.doc_第4页
进程的创建和终止.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计科092 200900814221 实验二、进程的创建与撤消一、 实验目的: 1. 通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解Windows 下进程生存过程.2. 通过阅读和分析实验程序,学习创建进程、观察进程和终止进程的程序设计方法给出本实验要求达到的目的二、背景知识1. 创建进程:CreateProcess() 调用的核心参数是可执行文件运行时的文件名及其命令行.下表详细地列出了每个参数的类型和名称.参数名称使用目的LPCTSTR lpApplivationName全部或部分地指明包括可执行代码的EXE文件的文件名LPCTSTR lpCommandLine向可执行文件发送的参数LPSECURIITY_ATTRIBUTES lpProcessAttributes返回进程句柄的安全属性.主要指明这一句柄是否应该由其他子进程所继承LPSECURIITY_ATTRIBUTES lpThreadAttributes返回进程的主线程的句柄的安全属性BOOL bInheritHandle一种标志,告诉系统允许新进程继承创建者进程的句柄DWORD dwCreationFlage特殊的创建标志 (如CREATE_SUSPENDED) 的位标记LPVOID lpEnvironment向新进程发送的一套环境变量;如为null值则发送调用者环境LPCTSTR lpCurrentDirectory新进程的启动目录STARTUPINFO lpStartupInfoSTARTUPINFO结构,包括新进程的输入和输出配置的详情LPPROCESS_INFORMATION lpProcessInformation调用的结果块;发送新应用程序的进程和主线程的句柄和ID三、实验内容1编译运行项目Lab2.1CntrlOtherPrcss.dsw,观察运行结果,并阅读和分析实验程序.*主要分析A 、void CCntrlOtherPrcssDlg:OnStart();B、 void CCntrlOtherPrcssDlg:OnStop();2编译运行项目Lab2.2proclist.dsw,观察运行结果,并阅读和分析实验程序. *主要分析A 、void CCntrlOtherPrcssDlg:OnStart();B、 void CCntrlOtherPrcssDlg:OnStop(); 3. 编写程序将系统中所有的Notepad进程全部终止.TerminateProcess就可以: BOOL TerminateProcess( HANDLE hProcess, / handle to the process UINT uExitCode / exit code for the process ); 二、 实验步骤:需求分析:以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?并明确规定:答:该实验要求我们编写程序体会如何创建进程,通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,学习创建进程、观察进程和终止进程的程序设计方法。 概要设计:说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。(1) 详细设计改程序是基于对话框的一个小程序,对话框上有两个按钮,当点击创建的时候,会打开c:windowsnotepad.exe c:autoexec.bat文件,并提示创建进程成功,当点击结束的时候会关闭该文件(2) 调试分析:使用说明:说明如何使用你编写的程序,详细列出每一步的操作步骤。 新建一个工程,选择基于对话框的程序,然后设计对话框,编写相应的程序(具体程序将在程序清单中说明)设计的对话框:点击启动:点击终止会关闭对话框。三、 实验总结首先查看“任务管理器”进程的动态,并新建和关闭进程观察。接着是要创建进程和撤销进程,首要工作是我们得弄清楚两个系统函数CreateProcess()和TerminateProcess()入口参数的类型和函数,弄明白这些关键因素,然后就是如何将它们组织起来,我用的MFC的消息触发更加直观,有些参数弄的还是不太明白,还需要多多努力。通过这次试验,我们加深了平时学习的理论知识和实践的联系,通过编程理解了进程的创建和终止。附录:程序清单#include stdafx.h#include CntrlOtherPrcss.h#include CntrlOtherPrcssDlg.h#include winbase.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MSG(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ CCntrlOtherPrcssDlg dialogCCntrlOtherPrcssDlg:CCntrlOtherPrcssDlg(CWnd* pParent /*=NULL*/): CDialog(CCntrlOtherPrcssDlg:IDD, pParent)/AFX_DATA_INIT(CCntrlOtherPrcssDlg)/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);m_hPro=NULL;void CCntrlOtherPrcssDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CCntrlOtherPrcssDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CCntrlOtherPrcssDlg, CDialog)/AFX_MSG_MAP(CCntrlOtherPrcssDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_START, OnStart)ON_BN_CLICKED(IDC_STOP, OnStop)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CCntrlOtherPrcssDlg message handlersBOOL CCntrlOtherPrcssDlg:OnInitDialog()CDialog:OnInitDialog();/ Add About. menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automatically/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/ TODO: Add extra initialization herereturn TRUE; / return TRUE unless you set the focus to a controlvoid CCntrlOtherPrcssDlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialog:OnSysCommand(nID, lParam);/ If you add a minimize button to your dialog, you will need the code below/ to draw the icon. For MFC applications using the document/view model,/ this is automatically done for you by the framework.void CCntrlOtherPrcssDlg:OnPaint() if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ Draw the icondc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();/ The system calls this to obtain the cursor to display while the user drags/ the minimized window.HCURSOR CCntrlOtherPrcssDlg:OnQueryDragIcon()return (HCURSOR) m_hIcon;void CCntrlOtherPrcssDlg:OnStart() PROCESS_INFORMATION pi;STARTUPINFO si;/初始化变量memset(&si,0,sizeof(si);si.cb=sizeof(si);si.wShowWindow=SW_SHOW;si.dwFlags=STARTF_USESHOWWINDOW;/打开记事本程序BOOL fRet=CreateProcess(NULL,c:windowsnotepad.exe c:autoexec.bat,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS|CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi);if(!fRet)/创建失败,显示错误信息LPVOID lpMsgBuf;FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,NULL,GetLastError(),MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), / Default language(LPTSTR)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论