实验1进程控制与描述Word文档下载推荐.doc
- 文档编号:670597
- 上传时间:2023-04-29
- 格式:DOC
- 页数:4
- 大小:31KB
实验1进程控制与描述Word文档下载推荐.doc
《实验1进程控制与描述Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《实验1进程控制与描述Word文档下载推荐.doc(4页珍藏版)》请在冰点文库上搜索。
//可执行模块名
LPTSTRlpCommandLine,
//命令行字符串
LPSECURITY_ATTRIBUTESlpProcessAttributes,
//进程的安全属性
LPSECURITY_ATTRIBUTESlpThreadAttributes,
//线程的安全属性
BOOLbInheritHandles,
//句柄继承标志
DWORDdwCreationFlags,
//创建标志
LPVOIDlpEnvironment,
//指向新的环境块的指针
LPCTSTRlpCurrentDirectory,
//指向当前目录名的指针
LPSTARTUPINFOlpStartupInfo,
//指向启动信息结构的指针
LPPROCESS_INFORMATIONlpProcessInformation
//指向进程信息结构的指针)
可以指定第一个参数,即应用程序的名称,其中包括相对于当前进程的当前目录的全路径或者利用搜索方法找到的路径;
lpCommandLine参数允许调用者向新应用程序发送数据;
接下来的三个参数与进程和它的主线程以及返回的指向该对象的句柄的安全性有关。
然后是标志参数,用以在dwCreationFlags参数中指明系统应该给予新进程什么行为。
经常使用的标志是CREATE_SUSPNDED,告诉主线程立刻暂停。
当准备好时,应该使用ResumeThread()API来启动进程。
另一个常用的标志是CREATE_NEW_CONSOLE,告诉新进程启动自己的控制台窗口,而不是利用父窗口。
这一参数还允许设置进程的优先级,用以向系统指明,相对于系统中所有其他的活动进程来说,给此进程多少CPU时间。
接着是CreateProcess()函数调用所需要的三个通常使用缺省值的参数。
第一个参数是lpEnvironment参数,指明为新进程提供的环境;
第二个参数是lpCurrentDirectory,可用于向主创进程发送与缺省目录不同的新进程使用的特殊的当前目录;
第三个参数是STARTUPINFO数据结构所必需的,用于在必要时指明新应用程序的主窗口的外观。
CreateProcess()的最后一个参数是用于新进程对象及其主线程的句柄和ID的返回值缓冲区。
以PROCESS_INFORMATION结构中返回的句柄调用CloseHandle()API函数是重要的,因为如果不将这些句柄关闭的话,有可能危及主创进程终止之前的任何未释放的资源。
3.终止进程
所有进程都是以调用ExitProcess()或者TerminateProcess()函数结束的。
三.实验内容与步骤
1进程的创建和终止。
编写一段程序,可以创建一个进程,并终止当前创建的进程。
试观察记录程序执行的结果,并分析原因。
2利用VC++6.0实现上述程序设计和调试操作,对于进程创建的成功与否、终止进程操作的成功与否提供一定的提示框。
3通过阅读和分析实验程序,学习创建进程、观察进程和终止进程的程序设计方法
四、实验过程与实验运行结果:
本实验显示了创建子进程的基本框架。
该程序只是再一次地启动自身,显示它的系统进程ID和它在进程列表中的位置。
运行结果如图所示:
五、源程序:
//proccreate项目
#include<
windows.h>
iostream>
stdio.h>
//创建传递过来的进程的克隆过程并赋于其ID值
voidStartClone(intnCloneID)
{
//提取用于当前可执行文件的文件名
TCHARszFilename[MAX_PATH];
:
:
GetModuleFileName(NULL,szFilename,MAX_PATH);
//格式化用于子进程的命令行并通知其EXE文件名和克隆ID
TCHARszCmdLine[MAX_PATH];
sprintf(szCmdLine,"
\"
%s\"
%d"
szFilename,nCloneID);
//用于子进程的STARTUPINFO结构
STARTUPINFOsi;
ZeroMemory(reinterpret_cast<
void*>
(&
si),sizeof(si));
si.cb=sizeof(si);
//必须是本结构的大小
//返回的用于子进程的进程信息
PROCESS_INFORMATIONpi;
//利用同样的可执行文件和命令行创建进程,并赋于其子进程的性质
BOOLbCreateOK=:
CreateProcess(
szFilename,//产生这个EXE的应用程序的名称
szCmdLine,//告诉其行为像一个子进程的标志
NULL,//缺省的进程安全性
NULL,//缺省的线程安全性
FALSE,//不继承句柄
CREATE_NEW_CONSOLE,//使用新的控制台
NULL,//新的环境
NULL,//当前目录
&
si,//启动信息
pi);
//返回的进程信息
if(bCreateOK)
std:
cout<
<
"
Processcreatesuccessfully!
std:
endl;
//终止子进程
BOOLbEndOK=:
TerminateProcess(pi.hProcess,0);
if(bEndOK)
std:
Processexitsuccessfully!
}
intmain(intargc,char*argv[])
{
//确定进程在列表中的位置
intnClone(0);
if(argc>
1)
{
//从第二个参数中提取克隆ID
:
sscanf(argv[1],"
%d"
&
nClone);
}
//显示进程位置
std:
cout<
"
ProcessID:
<
:
GetCurrentProcessId()
<
CloneID:
nClone
std:
//检查是否有创建子进程的需要
constintC_nCloneMax=25;
if(nClone<
C_nCloneMax)
//发送新进程的命令行和克隆号
StartClone(++nClone);
//在终止之前暂停一下(l/2秒)
:
Sleep(500);
// std:
cout<
ProcessExit!
return0;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 进程 控制 描述