C++/MFC-进程Process
来源:互联网 发布:agile java 编辑:程序博客网 时间:2024/05/22 14:10
一、 进程
1.1简单的说
双击一个EXE图标时,系统就会产生一个相应的进程,分配相应的资源,并执行相应的代码。1.2标准一些的说法
进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。1.3进程的定义
进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。二、 进程相关函数
2.1进程的诞生
假设EXE文件名为app.exe函数:CreateProcess
2.1.1系统创建步骤
1、系统Shell调用CreateProcess 创建名为app.exe的进程
2、系统产生一个“进程核心对象”,计数值为1
3、系统为此进程建立一个4GB的地址空间
4、系统将代码及相关数据加载映射到上述地址空间(如app.exe的程序代码,数据资源,dll动态链接库等)
5、系统为此进程创建一个线程,这个线程称为主线程(primary thread),线程才是CPU时间分配对象。
进程可以想成是一个家庭,线程是家里的成员,主线程就是一家之长!,一个进程最少有一个线程。
6、系统调用C runtime 函数库的Startup code
7、Startup code 调用App程序的WinMain入口函数
8、App程序开始运行
2.2进程的死亡
2.2.1系统正常结束
9、使用者关闭app主窗口,使WinMain消息循环结束,于是winMain结束。
10、回到Startup code
11、回到系统,系统调用 ExitProcess结束进程
函数:TerminateProcess三、相关代码测试
PROCESS_INFORMATION pi;//注意这应该放到.h文件中void C进程Dlg::OnBnClickedButton1(){// TODO: 在此添加控件通知处理程序代码STARTUPINFO si = { sizeof(si) };TCHAR vs[256] = L"notepad.exe d:\\1.txt";//命令行参数CreateProcess(NULL, vs, NULL, NULL, false, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);}void C进程Dlg::OnBnClickedButton2(){// TODO: 在此添加控件通知处理程序代码//退出进程 参数说明:TerminateProcess(pi.hProcess, //1、hProcess:要终止(杀死)进程的句柄,需要有PROCESS_TERMINATE权限。1222); //2、uExitCode:设置进程的退出值。可通过GetExitCodeProcess函数得到一个进程的退出值。}
若报错,可改为“使用 Unicode 字符集”。
或者将CreateProcess改为CreateProcessA,将STARTUPINFO改为STARTUPINFOA。此时可将vs的值直接复制到CreateProcessA中。
CreateProcessA(NULL, "notepad.exe d:\\1.txt", NULL, NULL, false, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);
阅读全文
0 0
- C++/MFC-进程Process
- C++/MFC-进程优先级
- 3.多进程例程:process.c
- 进程-process
- Process 进程
- 进程process
- Process进程
- C# 进程间通信 (Process Communication in C#)
- c#-- 使用Process类杀死进程,执行命令等
- C++、MFC创建进程管理器的代码
- C++/MFC-进程/线程亲缘性
- 学习笔记之深入浅出MFC 第7章 进程与线程(Process and Thread)
- Process(进程)学习
- Process进程的操作
- System Idle Process进程
- 进程代数 Process Algebra
- Process 启动进程
- 进程(Process)
- 图灵社区 Android编程权威指南 [记录]
- 面试题28字符串的排列
- Java基础四
- 《挑战程序设计竞赛》阅读笔记一 之 ALDS1_1_D Maximum Profit
- JAVA变量与常量应用示例
- C++/MFC-进程Process
- Luxurious Houses
- iPhone销量在大中华区营收缩水14%
- Spring的scope="prototype"解决多线程问题
- 深入JVM内核---GC算法
- Canvas绘制Text文本居中
- H.264 H.264RTP发送和接收
- eclipse中装tomcat7.0
- scrapy cluster搭建实录