windows下安全的创建子进程

原创 2008年10月10日 17:35:00
  1. #include <windows.h>
  2. int main()
  3. {
  4.     STARTUPINFO si = { sizeof(si) };
  5.     PROCESS_INFORMATION pi;
  6.     TCHAR szCommandLine[] = TEXT("c://o//yes");
  7.     SetErrorMode( SEM_NOGPFAULTERRORBOX );
  8.     BOOL bCreateRet = CreateProcess(NULL, szCommandLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, π);
  9.     
  10.     if (!bCreateRet)
  11.         return 0;
  12.     DWORD dwRet = WaitForSingleObject(pi.hProcess, 2000);
  13.     
  14.     TerminateProcess(pi.hProcess, 0);
  15. }
创建进程有system("")函数,但该函数有如下限制:
1、函数执行后,创建子进程,父进程必须挂起直到子进程运行结束。
2、子进程如果出现异常,如运行崩溃、死循环等情况,父进程无法通过超时询问等方式来处理。

所以,在windows下编写可靠程序时,应避免使用system函数,而应该使用CreateProcess函数。
以上代码段创建子进程,通过SetErrorMode设置标记位,使得子进程运行崩溃时不弹出调试信息,否则,父进程即使通过
询问超时来关闭子进程也无法完成关闭,因为调试程序也引用了该子进程。

以上API详细信息参见MSDN
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

windows下创建子进程

本文转载自http://dreamneverland.blog.163.com/blog/static/18359440720111028324647/ Task 1.1.  Step 1. On ...

windows、linux创建子进程

在windows下创建子进程较常用到的API就是CreateProcess,可以通过以下的方式启动一个新进程:       STARTUPINFO si = {0};       ...

python安全管理子进程-subprocess

经常会用到python去调用外部 工具或者命令去干活 有的时候子进程并不按预期退出 比如,子进程由于某种原因挂在那里, 这时候也许,我们有这样一种需求:需要父进程对子进程有监控动作,...

windows 套接字子进程继承

网络编程模式中,有一种是多进程模式,主进程侦听,收到连接后,启动子进程处理请求,每个连接一个子进程。 在linux中通过fork很容易实现,因为fork时子进程继承父进程的文件描述符,套接字也是一种...

windows批处理 等待子进程退出

从DOS过来的老鸟应该都知道批处理,这个功能在WINDOWS中仍然保留着。批处理说白了就是把一系列DOS命令写在一个文本文件里,然后把这个文件命名为XXX.bat(WINXP以后的系统也可以命名为*....

Windows下的"ptrace"-父进程监视子进程Debugging API

原文地址:http://blog.csdn.net/ariesjzj/article/details/7226443  Linux下有功能强大ptrace,用于让父进程监视/修改/控制子进程的状态。...

Windows内核之进程的终止和子进程

1 进程终止的方法: 主线程的进入点函数返回(最好使用这个方法) 进程中的一个线程调用ExitProcesss函数(应该避免使用这种方法)。  另一个进程中的线程调用TerminateProcess函...

Node.js中,使用cluster创建子进程

'use strict';var cluster = require('cluster'); var numCPUs = require('os').cpus().length;// 每个fork出来...

使用 subprocess.Popen 创建子进程

subprocess被用来替换一些老的模块和函数,如:os.system、os.spawn*、os.popen*、popen2.*、commands.*。可见,subprocess是被推荐使用的模块。...

GDB调试fork+exec创建的子进程的方法

多进程是Linux编程中一个很重要的内容,典型的例子就是守护进程(daemon)。有关守护进程的定义和编程规范,请参考: http://blog.csdn.net/tuzhutuzhu/articl...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)