进程相关
来源:互联网 发布:电商美工设计 编辑:程序博客网 时间:2024/05/01 08:42
1、当不再使用进程对象与线程对象时,要记得关闭进程或线程的句柄。
2、GetCurrentProcessId得到当前进程ID,GetCurrentThreadId得到当前正在运行线程的ID,
GetProcessId获得与指定句柄对应的一个进程ID,GetThreadId获得与指定句柄对应的线程ID,GetProcessIdOfThread获得线程所有进程的ID。
3、要保证一个进程或线程ID不被重用,唯一的办法就是保证进程或线程对象不被销毁。一般当应用程序不再使用ID的时候,使用CloseHandle来释放内核对象。
4、终止进程4种方式:主线程入口点函数返回(推荐的方式)、进程中的一个线程调用ExitProcess(要避免这种方式)、
另一个进程的线程调用TerminateProcess函数(要避免这种方式)、进程中的所有线程都“自然死亡”(不会发生的方式)。
5、主线程的入口点函数返回,可以保证以下操作会执行:
1)、该线程创建的任何C++对象都将由这些对象的析构函数正确销毁。
2)、操作系统将正确释放线程栈使用的内存。
3)、系统将进程的退出代码设为入口点函数的返回值。
4)、系统递减进程内核对象的使用计数。
6、应用程序的主线程从入口点返回时,C/C++运行库就会调用ExitProcess来终止进程。这解释了为什么只需从主线程的入口函数返回,就会终止整个进程。
7、C/C++应用程序应该避免调用ExitProcess,这样会造成有些析构函数不会执行,可能会造成泄漏内存或其它资源。
8、任何线程都可以调用TerminateProcess终止另一个进程或它自己的进程,执行该函数后,操作系统会进行彻底的清理工作,所以不会泄漏任何东西。
9、TerminateProcess是异步的,它告诉系统我们希望进程终止,但到函数返回的时候,系统并不能保证进程已经强行终止了。
10、当系统检测到一个进程中没有任何线程在运行时,就会终止这个进程。
11、进程终止时,系统会依次执行以下操作:
1)、终止进程中遗留的任何线程。
2)、释放进程分配的所有用户对象和GDI对象,关闭所有内核对象(不包括被其它进程打开的)。
3)、进程的退出代码从STILL_ACTIVE变为传给ExitProcess或TerminateProcess函数的代码。
4)、进程内核对象变为已解发状态。
5)、进程内核对象使用计数减1。
12、不同进程之间传递数据的几种方式:动态数据交换(DDE)、OLE、管道、邮件槽等。
13、运行独立的子进程:
PROCESS_INFORMATION pi;
BOOL fSuccess=CreateProcess(...,&pi);
if(fSuccess)
{
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
}
2、GetCurrentProcessId得到当前进程ID,GetCurrentThreadId得到当前正在运行线程的ID,
GetProcessId获得与指定句柄对应的一个进程ID,GetThreadId获得与指定句柄对应的线程ID,GetProcessIdOfThread获得线程所有进程的ID。
3、要保证一个进程或线程ID不被重用,唯一的办法就是保证进程或线程对象不被销毁。一般当应用程序不再使用ID的时候,使用CloseHandle来释放内核对象。
4、终止进程4种方式:主线程入口点函数返回(推荐的方式)、进程中的一个线程调用ExitProcess(要避免这种方式)、
另一个进程的线程调用TerminateProcess函数(要避免这种方式)、进程中的所有线程都“自然死亡”(不会发生的方式)。
5、主线程的入口点函数返回,可以保证以下操作会执行:
1)、该线程创建的任何C++对象都将由这些对象的析构函数正确销毁。
2)、操作系统将正确释放线程栈使用的内存。
3)、系统将进程的退出代码设为入口点函数的返回值。
4)、系统递减进程内核对象的使用计数。
6、应用程序的主线程从入口点返回时,C/C++运行库就会调用ExitProcess来终止进程。这解释了为什么只需从主线程的入口函数返回,就会终止整个进程。
7、C/C++应用程序应该避免调用ExitProcess,这样会造成有些析构函数不会执行,可能会造成泄漏内存或其它资源。
8、任何线程都可以调用TerminateProcess终止另一个进程或它自己的进程,执行该函数后,操作系统会进行彻底的清理工作,所以不会泄漏任何东西。
9、TerminateProcess是异步的,它告诉系统我们希望进程终止,但到函数返回的时候,系统并不能保证进程已经强行终止了。
10、当系统检测到一个进程中没有任何线程在运行时,就会终止这个进程。
11、进程终止时,系统会依次执行以下操作:
1)、终止进程中遗留的任何线程。
2)、释放进程分配的所有用户对象和GDI对象,关闭所有内核对象(不包括被其它进程打开的)。
3)、进程的退出代码从STILL_ACTIVE变为传给ExitProcess或TerminateProcess函数的代码。
4)、进程内核对象变为已解发状态。
5)、进程内核对象使用计数减1。
12、不同进程之间传递数据的几种方式:动态数据交换(DDE)、OLE、管道、邮件槽等。
13、运行独立的子进程:
PROCESS_INFORMATION pi;
BOOL fSuccess=CreateProcess(...,&pi);
if(fSuccess)
{
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
}
- 进程相关
- 进程相关
- 进程相关
- 进程相关
- 进程相关
- 进程相关
- Windows-进程-进程相关API
- 进程相关API
- PROC文件系统(进程相关)
- 进程相关函数
- 进程令牌(TOKEN)相关!
- 进程相关的数据结构
- 进程相关操作
- 进程相关的概念
- linux 进程相关
- linux 进程相关简介
- 进程相关知识
- 进程优先级相关
- SQL查询效率
- 关于RegisterClass的注册位置
- 对象复制和对象赋值的区别
- Flex组件生命周期
- thinkphp3.0 数据查询
- 进程相关
- Repeater中OnItemCommand无法触发事件
- datatable的查询介绍
- SQL——规则
- 实现带有抽象方法的枚举
- 数据结构,线性表
- (1)nutch加载配置文件
- Arcgis10安装说明
- ios 设置行数