Windows via C/C++ 学习(10)子进程
2011-01-19 20:03
267 查看
当你设计一个应用程序时,你可能想使用一些需要长时间运行的代码,而又不中继当前正在进行的工作。一个方法是使用线程,将这个工作交由一个线程去执行,如果这些代码在运行过程中发生了错误,它可能会影响所在进程空间的所有线程。第二个方法是建立一个子进程,由这个子进程完成所需工作,这样子进程代码的错误不会影响到父进程的执行。
子进程与父进程之间可以通过动态数据交换(DDE)、OLE、管道、邮件槽等进行通信,使用内存映射文件是最便利的方法之一。
当前子进程终止后,子进程句柄变为有信号,父进程可使用 WaitForSingleObject 来等待子进程退出,这样父进程就可使用 GetExitCodeProcess 来获得子进程的退出码。
父进程在创建它的一个子进程后就立即调用 CloseHandle 来关闭返回的子进程的进程句柄和主线程句柄。
子进程与父进程之间可以通过动态数据交换(DDE)、OLE、管道、邮件槽等进行通信,使用内存映射文件是最便利的方法之一。
当前子进程终止后,子进程句柄变为有信号,父进程可使用 WaitForSingleObject 来等待子进程退出,这样父进程就可使用 GetExitCodeProcess 来获得子进程的退出码。
运行分离的子进程
当父进程创建一个子进程后,父进程并不打算与子进程进程通信,父进程存续期间也不需要子进程必须完成它的工作,这种情况叫做“分离的子进程”。Windows Explore 创建的子进程就是这种情况。父进程在创建它的一个子进程后就立即调用 CloseHandle 来关闭返回的子进程的进程句柄和主线程句柄。
相关文章推荐
- 深入浅出Windows 10 通用应用开发学习笔记(C++) 3-1
- 《Windows via C/C++》学习笔记 —— 线程的调度
- Windows via C/C++ 学习(13)作业
- 《Windows via C/C++》 学习笔记
- 《Windows Via C/C++》边学习,边翻译(七)操作字符和字符串-6
- 《Windows Via C/C++》学习之同步设备I/O与异步设备I/O
- Windows Via C/C++ 读书笔记 10
- Windows via C/C++ 学习(16)用户模式下的线程同步(一)
- Windows via C/C++ 学习(11)管理员用户作为标准用户运行
- 《Windows Via C/C++》边学习,边翻译(二)操作字符和字符串-1
- 《Windows Via C/C++》边学习,边翻译(四)操作字符和字符串-3
- 《Windows Via C/C++》边学习,边翻译(一)错误处理(Error Handling)
- windows via c/c++ 学习笔记(二) 内核同步
- Windows via C/C++: 子进程
- windows via c/c++ 学习笔记(三) 线程池
- 《Windows Via C/C++》边学习,边翻译(三)操作字符和字符串-2
- 《Windows Via C/C++》边学习,边翻译(六)操作字符和字符串-5
- Windows via C/C++ 学习(15)线程调度、线程优先级和亲缘性
- Windows via C/C++ 学习(14)线程基础
- WIndows via C/C++ 学习(12)权限上下文