实验3windows进程的控制

上传人:luoxia****01804 文档编号:70323666 上传时间:2019-01-16 格式:DOC 页数:4 大小:41KB
返回 下载 相关 举报
实验3windows进程的控制_第1页
第1页 / 共4页
实验3windows进程的控制_第2页
第2页 / 共4页
实验3windows进程的控制_第3页
第3页 / 共4页
实验3windows进程的控制_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《实验3windows进程的控制》由会员分享,可在线阅读,更多相关《实验3windows进程的控制(4页珍藏版)》请在金锄头文库上搜索。

1、实验2Windows基本进程管理一、实验目的(1)通过对Windows XP进行编程,来熟悉和了解系统(2)通过分析程序,来了解进程的创建、终止二、实验内容1、创建进程#include #include #include / 创建传递过来的进程的克隆过程并赋于其ID值void StartClone(int nCloneID) / 提取用于当前可执行文件的文件名 TCHAR szFilenameMAX_PATH ; : GetModuleFileName(NULL, szFilename, MAX_PATH) ; / 格式化用于子进程的命令行并通知其EXE文件名和克隆ID TCHAR szCmd

2、LineMAX_PATH;: sprintf(szCmdLine,%s%d,szFilename,nCloneID);/ 用于子进程的STARTUPINFO结构 STARTUPINFO si; : ZeroMemory(reinterpret_cast (&si) , sizeof(si) ) ; si.cb = sizeof(si) ;/ 必须是本结构的大小 / 返回的用于子进程的进程信息 PROCESS_INFORMATION pi; / 利用同样的可执行文件和命令行创建进程,并赋于其子进程的性质 BOOL bCreateOK=:CreateProcess( szFilename,/ 产生

3、这个EXE的应用程序的名称 szCmdLine,/ 告诉其行为像一个子进程的标志 NULL,/ 缺省的进程安全性 NULL,/ 缺省的线程安全性 FALSE,/ 不继承句柄 CREATE_NEW_CONSOLE,/ 使用新的控制台 NULL,/ 新的环境 NULL,/ 当前目录 &si,/ 启动信息 &pi) ;/ 返回的进程信息 / 对子进程释放引用 if (bCreateOK) : CloseHandle(pi.hProcess) ; : CloseHandle(pi.hThread) ; int main(int argc, char* argv ) / 确定进程在列表中的位置 int

4、nClone(0) ; if (argc1) / 从第二个参数中提取克隆ID : sscanf(argv1 , %d , &nClone) ; / 显示进程位置 std : cout Process ID: : GetCurrentProcessId() , Clone ID: nClone std : endl; / 检查是否有创建子进程的需要 const int c_nCloneMax=25; /准备 复制25个子进程 if (nClone c_nCloneMax) / 发送新进程的命令行和克隆号 StartClone(+nClone) ; / 在终止之前暂停一下 (l/2秒) : Sle

5、ep(500) ;getchar();2、终止进程# include # include # include static LPCTSTR g_szMutexName = w2kdg.ProcTerm.mutex.Suicide ;/ 创建当前进程的克隆进程的简单方法void StartClone() / 提取当前可执行文件的文件名 TCHAR szFilenameMAX_PATH ; : GetModuleFileName(NULL, szFilename, MAX_PATH) ; / 格式化用于子进程的命令行,指明它是一个EXE文件和子进程 TCHAR szCmdLineMAX_PATH

6、; : sprintf(szCmdLine, %schild , szFilename) ; / 子进程的启动信息结构 STARTUPINFO si; : ZeroMemory(reinterpret_cast (&si),sizeof(si) ; si.cb = sizeof(si) ;/ 应当是此结构的大小 / 返回的用于子进程的进程信息 PROCESS_INFORMATION pi; / 用同样的可执行文件名和命令行创建进程,并指明它是一个子进程 BOOL bCreateOK=:CreateProcess( szFilename,/ 产生的应用程序的名称 (本EXE文件) szCmdLi

7、ne,/ 告诉我们这是一个子进程的标志 NULL,/ 用于进程的缺省的安全性 NULL,/ 用于线程的缺省安全性 FALSE,/ 不继承句柄 CREATE_NEW_CONSOLE,/创建新窗口 NULL,/ 新环境 NULL,/ 当前目录 &si,/ 启动信息结构 &pi ) ;/ 返回的进程信息 / 释放指向子进程的引用 if (bCreateOK) : CloseHandle(pi.hProcess) ; : CloseHandle(pi.hThread) ; void Parent() / 创建“自杀”互斥程序体 HANDLE hMutexSuicide=: CreateMutex( N

8、ULL,/ 缺省的安全性 TRUE,/ 最初拥有的 g_szMutexName) ;/ 为其命名 if (hMutexSuicide != NULL) / 创建子进程 std : cout Creating the child process. std : endl; : StartClone() ; / 暂停 : Sleep(5000) ; / 指令子进程“杀”掉自身 std : cout Telling the child process to quit. std : endl; : ReleaseMutex(hMutexSuicide) ; / 消除句柄 : CloseHandle(hM

9、utexSuicide) ; void Child() / 打开“自杀”互斥体 HANDLE hMutexSuicide = : OpenMutex( SYNCHRONIZE,/ 打开用于同步 FALSE,/ 不需要向下传递 g_szMutexName) ;/ 名称 if (hMutexSuicide != NULL) / 报告我们正在等待指令 std : cout Child waiting for suicide instructions. std : endl; : WaitForSingleObject(hMutexSuicide, INFINITE) ; / 准备好终止,清除句柄 std : cout Child quiting. 1 & : strcmp(argv1 , child )= 0) Child() ; else Parent() ; return 0;getchar();

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号