进程的创建和终止

2020-06-21 14:06

计科092 200900814221

实验二、进程的创建与撤消

一、

实验目的:

1. 通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解Windows 下进程生存过程.

2. 通过阅读和分析实验程序,学习创建进程、观察进程和终止进程的程序设计方法

给出本实验要求达到的目的

二、背景知识

1. 创建进程:CreateProcess() 调用的核心参数是可执行文件运行时的文件名及其命令行.下表详细地列出了每个参数的类型和名称.

参数名称 LPCTSTR lpApplivationName LPCTSTR lpCommandLine LPSECURIITY_ATTRIBUTES lpProcessAttributes LPSECURIITY_ATTRIBUTES 返回进程的主线程的句柄的安全属性 lpThreadAttributes BOOL bInheritHandle DWORD dwCreationFlage LPVOID lpEnvironment LPCTSTR lpCurrentDirectory STARTUPINFO lpStartupInfo LPPROCESS_INFORMATION 调用的结果块;发送新应用程序的进程和主线程的句柄和ID lpProcessInformation 一种标志,告诉系统允许新进程继承创建者进程的句柄 特殊的创建标志 (如CREATE_SUSPENDED) 的位标记 向新进程发送的一套环境变量;如为null值则发送调用者环境 新进程的启动目录 STARTUPINFO结构,包括新进程的输入和输出配置的详情 使用目的 全部或部分地指明包括可执行代码的EXE文件的文件名 向可执行文件发送的参数 返回进程句柄的安全属性.主要指明这一句柄是否应该由其他子进程所继承 三、实验内容 1.编译运行项目Lab2.1\\CntrlOtherPrcss.dsw,观察运行结果,并阅读和分析实验程序.

1

计科092 200900814221

*主要分析

A 、void CCntrlOtherPrcssDlg::OnStart(); B、 void CCntrlOtherPrcssDlg::OnStop();

2.编译运行项目Lab2.2\\proclist.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) 详细设计

2

计科092 200900814221

改程序是基于对话框的一个小程序,对话框上有两个按钮,当点击创建的时候,会打开c:\\\\windows\\\\notepad.exe c:\\\\autoexec.bat\文件,并提示创建进程成功,当点击结束的时候会关闭该文件 (2) 调试分析:

使用说明:说明如何使用你编写的程序,详细列出每一步的操作步骤。

新建一个

写相应的程序(具体程序将在程序清单中说明) 设计的对话框:

工程,选择基于对话框的程序,然后设计对话框,编

点击启动:

点击终止会关闭对话框。

三、

实验总结

3

计科092 200900814221

首先查看“任务管理器”进程的动态,并新建和关闭进程观察。接着是要创建进程和撤销进程,首要工作是我们得弄清楚两个系统函数CreateProcess()和TerminateProcess()入口参数的类型和函数,弄明白这些关键因素,然后就是如何将它们组织起来,我用的MFC的消息触发更加直观,有些参数弄的还是不太明白,还需要多多努力。 通过这次试验,我们加深了平时学习的理论知识和实践的联系,通过编程理解了进程的创建和终止。

附录:程序清单

#include \

#include \#include \#include \#ifdef _DEBUG

#define new DEBUG_NEW #undef THIS_FILE

static char THIS_FILE[] = __FILE__; #endif

// CAboutDlg dialog used for App About class CAboutDlg : public CDialog {

public:

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 // Implementation protected:

//{{AFX_MSG(CAboutDlg) //}}AFX_MSG

4

计科092 200900814221

DECLARE_MESSAGE_MAP() };

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) {

//{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT }

void CAboutDlg::DoDataExchange(CDataExchange* pDX) {

CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP }

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CCntrlOtherPrcssDlg dialog

CCntrlOtherPrcssDlg::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 Win32

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_hPro=NULL; }

void CCntrlOtherPrcssDlg::DoDataExchange(CDataExchange* pDX) {

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CCntrlOtherPrcssDlg) //}}AFX_DATA_MAP }

5


进程的创建和终止.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018年家庭经济困难大学新生入学补助申请名册公示表

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: