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 创建子进程

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

windows下创建进程,CreateProcess()详解及用法

CreateProcess() 函数原型如下: [C++] 纯文本查看 复制代码 ? 01 02 03 04 05 06 ...
  • bzhxuexi
  • bzhxuexi
  • 2014年04月17日 18:04
  • 20597

Windows版进程创建

进程是操作系统里面最常见的一种,那么如何创建一个进程呢?其实过程很简单。#include #include int main(int argc, char* argv[]) { //声明...
  • bitsjx
  • bitsjx
  • 2010年06月08日 15:37
  • 3409

Windows编程-进程的创建

1. 进程(Process)和线程(Thread)(1)进程进程是一个正在运行的程序,它拥有自己的虚拟内存地址空间,拥有自己的代码、数据和其他系统资源,如进程创建的文件、管道、同步对象等。一个进程也包...
  • w0801101117
  • w0801101117
  • 2013年06月08日 14:44
  • 1754

python创建子进程

Unix/Linux操作系统提供了一个fork()系统调用,它非常特殊。普通的函数调用,调用一次,返回一次,但是fork()调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复制了一份(称为...
  • qq_34127818
  • qq_34127818
  • 2017年01月11日 10:54
  • 316

windows下创建子进程

本文转载自http://dreamneverland.blog.163.com/blog/static/18359440720111028324647/ Task 1.1.  Step 1. On ...
  • gaoxuelin
  • gaoxuelin
  • 2013年07月28日 20:46
  • 810

windows下安全的创建子进程

#include int main(){    STARTUPINFO si = { sizeof(si) };    PROCESS_INFORMATION pi;    TCHAR szComma...
  • roofalison
  • roofalison
  • 2008年10月10日 17:35
  • 5711

Windows创建进程

1. WinExrc()函数 这个函数还存在是为了兼容一千老式的16位机而存在的,它的函数原型为: UINT WINAPI WinExec( _In_ LPCSTR lpCmdLine, _I...
  • m_buddy
  • m_buddy
  • 2017年06月04日 17:59
  • 429

[Windows]_[初级]_[创建独立子进程和读取子进程的输出]

场景: 1. 有一些外部工具命令需要通过程序调用,比如启动服务器或者使用网络命令获取输出。 2. 使用了匿名管道CreatePipe获取子进程输出....
  • infoworld
  • infoworld
  • 2015年01月19日 22:44
  • 1846

Windows核心编程 进程--CreateProcess函数 终止进程和子进程 进程的权限

CreateProcess函数 使用CreateProcess函数来创建一个进程 BOOL CreateProcess( LPCTSTR pszApplicationName,// na...
  • fztfztfzt
  • fztfztfzt
  • 2015年04月27日 16:32
  • 1546
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:windows下安全的创建子进程
举报原因:
原因补充:

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