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

zz: Python subprocess创建子进程(Windows下打开新的CMD窗口)

zz from: http://www.cnblogs.com/oubo/archive/2011/10/10/2394593.html Python subprocess 创建子进...

windows下创建子进程

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

windows 创建子进程

windows下想要创建一个子进程不如linux的fork函数来得方便,通过CreateProcess函数创建一个新的进程,函数的定义如下 BOOL CreateProcess(  LPCTST...
  • ciaos
  • ciaos
  • 2012年07月17日 15:49
  • 4155

windows、linux创建子进程

在windows下创建子进程较常用到的API就是CreateProcess,可以通过以下的方式启动一个新进程:       STARTUPINFO si = {0};             ...
  • yuyin86
  • yuyin86
  • 2012年03月31日 14:51
  • 561

python安全管理子进程-subprocess

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

python安全管理子进程-subprocess

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

windows批处理 等待子进程退出

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

windows 套接字子进程继承

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

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

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

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

1 进程终止的方法: 主线程的进入点函数返回(最好使用这个方法) 进程中的一个线程调用ExitProcesss函数(应该避免使用这种方法)。  另一个进程中的线程调用TerminateProcess函...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:windows下安全的创建子进程
举报原因:
原因补充:

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