众所周知,当用户在Windows操作系统中单击一个可执行文件时,系统就相当于产生了一个新进程。那么如何在一个程序产生一个新进程呢?Windows给广大程序员提供了很多的方法,一般来说,只需要调用一个API函数就可以实现进程的创建。下面将会介绍使用CreateProcess函数创建进程和使用ExitProcess函数及TerminateProcess函数终止进程的方法。

CreateProcess函数用来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件。当一个线程调用CreateProcess时,系统就会创建一个进程内核对象,其初始使用计数是1。该进程内核对象不是进程本身,而是操作系统管理进程时使用的一个较小的数据结构,可以将进程内核对象视为由进程的统计信息组成的一个较小的数据结构。然后,系统为新进程创建一个虚拟地址空间,并将可执行文件或任何必要的DLL文件的代码和数据加载到该进程的地址空间中。

然后,系统为新进程的主线程创建一个线程内核对象。与进程内核对象一样,线程内核对象也是操作系统用来管理线程的小型数据结构。

如果系统成功地创建了新进程和主线程,CreateProcess便返回为TRUE。

BOOL CreateProcess(

LPCTSTRlpApplicationName,     //可执行模块的名字

LPTSTRlpCommandLine,    //指定要运行的命令行

LPSECURITY_ATTRIBUTESlpProcessAttribute,      //进程对象的安全性说明

LPSECURITY_ATTRIBUTESlpThreadAttribute,       //线程对象的安全性说明

BOOLbInheritHandles,         //是否从调用进程处继承了句柄

DWORD dwCreationFlags,          //指定附加的、用来控制优先类和进程的创建的标志

LPVOIDlpEnvironment,      //指向一个新进程的环境块

LPCTSTRlpCurrentDirectory,      //子进程的工作路径

LPSTARTUPINFOlpStartupInfo,        //决定新进程的主窗体外观

LPPROCESS_INFOMATIONlpProcessInformation   //获取新进程的返回信息

);

ExitProcess函数,当进程中的一个线程调用ExitProcess函数时,进程便终止运行。该函数的原型如下:

Void ExitProcess (UINT fuExitCode);

该函数用于终止进行的运行,并将进程的退出代码设置为fuExitCode。ExitProcess函数并不返回任何值,因为进程已经终止运行了。如果在调用ExitProcess之后又增加了代码,那么该代码是不会被执行的。

TerminateProcess函数

在一个进程中调用TerminateProcess函数也能够终止进程的运行。TeeminateProcess函数的原型如下:

BOOL TerminateProcess(

HANDLE hProcess,

UINT fuExitCode   );

TerminateProcess函数和ExitProcess函数的一个很大的区别在于,任何线程都可以调用TerminateProcess函数来终止另一个进程或它自己的进程的运行,而ExitProcess函数只能被线程用来自己结束自己宿主进程的运行,不能结束其他进程的运行。

VC进程的创建、终止相关推荐

  1. 操作系统(二 )| 进程管理初探(前趋图、程序执行、进程的定义特征基本状态,进程的创建终止,阻塞唤醒,挂起激活)

    文章目录 前趋图和程序执行 前趋图 程序的顺序执行 程序的并发执行 进程的定义和特征 进程的基本状态 就绪状态 运行状态 阻塞状态 挂起状态 进程控制块(PCB) 作用: 块中信息: PCB的组织方式 ...

  2. linux创建进程读共享写复制,Linux下进程的创建、执行和终止

    1)进程的创建和执行 许多操作系统提供的都是产生进程的机制,也就是说,首先在新的地址空间里创建进程.读入可执行文件,后再开始执行.Linux中进程的创建很特别,它把上述步骤分解到两个单独的函数中去执行 ...

  3. 操作系统实验报告5:进程的创建和终止

    操作系统实验报告5 实验内容 实验内容:进程的创建和终止. 编译运行课件 Lecture 06 例程代码:Algorithm 6-1 ~ 6-6. 实验环境 架构:Intel x86_64 (虚拟机) ...

  4. 进程控制:进程的创建、终止、阻塞、唤醒和切换

    进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程.撤销已有进程.实现进程状态转换等功能.在操作系统中,一般把进程控制用的程序段称为原语,原语的特点是执行期间不允许中断,它是一个不 ...

  5. linux——进程(创建、终止、等待、替换)

    进程的基本操作 概念 程序运行的一个实例,其占有一定的空间. 查询某一进程当前情况 ps aux | grep 进程名 终止进程 kill -9 pid: //pid指需要终止的进程pid 创建 pi ...

  6. Linux_进程控制(创建进程,等待进程,进程终止)

    文章目录 1.创建进程 1.1 fork()函数初识 1.2 fork()创建进程代码示例 2.等待进程 2.1 进程等待概念 2.2进程等待必要性 2.3 进程等待方法 2.3.1 wait 2.3 ...

  7. Linux中进程的创建、进程的终止、进程的等待、进程的程序替换

    进程的创建 在进程的创建中,我们一个非常重要的函数 fork()函数,fork()函数会创建一个新的进程,为原有进程的子进程,原有就为父进程. 我们来看一下fork()函数的原型. #include ...

  8. Linux进程的创建图文教程,进程的创建和终止(超详细)

    大多数系统的进程能够并发执行,它们可以动态创建和删除.因此,操作系统必须提供机制,用于创建进程和终止进程. 进程创建 进程在执行过程中可能创建多个新的进程.创建进程称为父进程,而新的进程称为子进程.每 ...

  9. 进程和线程:进程的创建和终止

    进程的创建 进程创建的时机 系统初始化 一个进程执行了创建进程的系统调用 用户请求创建一个新进程 一个批处理作业初始化 进程分类 前台进程:和用户交互的进程. 守护进程:停留在后台处理的进程. (线程 ...

最新文章

  1. MySQL的4中隔离级别
  2. 0 win10重装partition_修复Win10系统无法安装系统保留分区方法
  3. shell中各种美元符号组合
  4. Generator函数自执行
  5. 【DP】小明游天界(zjoj 2149)
  6. pycharm创建django项目linux部署
  7. python代码显示进度条 tqdm
  8. P. Laguna/Evaluation of an Automatic Threshold Based Detector of Waveform Limits in Holter ECG
  9. java动漫网站_基于SSM框架下的JAVA漫画展示系统
  10. 交大网络教育计算机自测选择题,交大网络计算机组成与系统结构单元自测题.doc...
  11. 将bat文件转化成exe
  12. android手机双卡的电话录音,苹果与android手机电话通话录音
  13. 设计模式——工厂方法模式
  14. 学习笔记——深蓝学院点云系列公开课05:3D物体检测的发展与未来
  15. 利用AcrGIS计算核密度中某一等级的面积
  16. python小海龟画房子编程_教孩子学Python编程之海龟画图(一)
  17. 传输层 - TCP / UDP 协议详解
  18. 干货福利分享:pdf怎么去水印 如何在线去除PDF水印
  19. 安心收纳各种重要物品,不在家也能时刻守护安全,VOC智能保管箱G300上手测评
  20. 快速完成批量图片压缩,你需要这款图片压缩神器!

热门文章

  1. 32岁的程序员转职成为大学讲师,收入曝光
  2. 计算机运行一会儿后不显示,为什么电脑开机一会儿后,所有的软件都打不开了,点击都没反应...
  3. 清理windows硬盘空间,挤一挤原来还有这么多
  4. SQL数据库创建学生、教师、选课表
  5. Execl根据一列分组,找出另外一列的最大值
  6. 深度学习笔记~卷积网络中特征图的可视化
  7. 什么是4G LTE?移动通信网络知识普及
  8. 使用libcurl来下载文件
  9. 二叉搜索树(BST-Tree)(C++全)
  10. fcntl函数详解【转】