CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  进程/线程/DLL

为什么,创建新的进程总是失败???

楼主TinyTing(婷婷)2003-10-03 12:24:39 在 VC/MFC / 进程/线程/DLL 提问

我按照MSDN上给出的例子,在主函数中调用CreateProcess去创建一个新的进程,尝试了种种方法,但总是以失败而告终。在98   和   XP   下,结果是一样的。  
   
  源程序如下:   (在VC6.0   下运行)  
  #include   "windows.h"  
  #include   "iostream.h"  
   
  void   main(void)  
  {  
          STARTUPINFO   si;  
          PROCESS_INFORMATION   pi;  
   
          ZeroMemory(   &si,   sizeof(si)   );  
          si.cb   =   sizeof(si);  
          ZeroMemory(   &pi,   sizeof(pi)   );  
   
          //   Start   the   child   process.    
          //这里的返回值总是为   0   !  
          if(   !CreateProcess(   NULL,   //   No   module   name   (use   command   line).    
                  "MyChildProcess",   //   Command   line.    
                  NULL,                           //   Process   handle   not   inheritable.    
                  NULL,                           //   Thread   handle   not   inheritable.    
                  FALSE,                         //   Set   handle   inheritance   to   FALSE.    
                  0,                                 //   No   creation   flags.    
                  NULL,                           //   Use   parent's   environment   block.    
                  NULL,                           //   Use   parent's   starting   directory.    
                  &si,                             //   Pointer   to   STARTUPINFO   structure.  
                  &pi   )                           //   Pointer   to   PROCESS_INFORMATION   structure.  
          )    
          {  
                  cout<<"CreateProcess   failed."<<endl;  
          }  
   
          //   Wait   until   child   process   exits.  
          WaitForSingleObject(   pi.hProcess,   INFINITE   );  
   
          //   Close   process   and   thread   handles.    
          CloseHandle(   pi.hProcess   );  
          CloseHandle(   pi.hThread   );  
  }  
  问题点数:100、回复次数:7Top

1 楼whoishere(我来也)回复于 2003-10-03 12:36:38 得分 20

MyChildProcess.exe这个应用程序存在吗?在当前目录下吗?  
   
  MSDN上的例子也不是这么直接抄过来用的啊?  
   
  好好理解一下参数的意义吧!Top

2 楼FAICHEN(CC)回复于 2003-10-03 12:57:10 得分 20

给个绝对路径Top

3 楼smch(Ashes Of Time)回复于 2003-10-03 13:20:10 得分 0

STARTUPINFO   startupInfo;  
  memset(&startupInfo,0,sizeof(STARTUPINFO));  
  startupInfo.wShowWindow   =   SW_MINIMIZE;  
  startupInfo.dwFlags   =   STARTF_USESHOWWINDOW;  
  PROCESS_INFORMATION   processInformation;  
  BOOL   bRetCode   =   CreateProcess(szFileName,NULL,NULL,   NULL,   false,NORMAL_PRIORITY_CLASS,NULL,NULL,&startupInfo,&processInformation);  
  if(!bRetCode)  
  {  
  CString   strError   =   "无法启动....";  
  return   false;  
  }Top

4 楼smch(Ashes Of Time)回复于 2003-10-03 13:20:31 得分 0

参考参考。Top

5 楼smch(Ashes Of Time)回复于 2003-10-03 13:21:32 得分 30

还有,以后提问题最好把错误的信息给出来。  
  而且你也应该自己跟踪一下GetLastError()的值分析原因,然后根据错误原因去找解决方法。Top

6 楼vcforever(累)回复于 2003-10-03 13:50:53 得分 30

看看你要创建的哪个MyChildProcess进程的存不存在!  
  如果不存在,CreateProcess的返回值就会是0!Top

7 楼TinyTing(婷婷)回复于 2003-10-03 19:56:16 得分 0

谢谢大家!我找到了原因:CreateProcess()   这个函数不能创建一个新的进程,它只是将一个现有的可执行文件载入了内存,为它创建进程。Top

相关问题

  • 创建进程
  • 对其它进程创建的ListView控件调用ListView_GetItemPosition()为何失败?
  • ASP创建进程
  • 紧急求助:为什么我总是创建Socket失败?
  • MFC中用AfxBeginThread创建多线程怎么总是失败呢?
  • 进程问题,不能创建进程
  • 关于进程创建子进程
  • 关于创建进程
  • 在程序中(ado)用sql语句创建dbf表,为什么总是失败??
  • 新手提问,请大家多多指教。谢谢。 我用CreateProcess函数创建一个新的进程失败。给出代码,请帮看看问题在哪?

关键词

  • null
  • si
  • inheritance
  • process
  • handle
  • sizeof

得分解答快速导航

  • 帖主:TinyTing
  • whoishere
  • FAICHEN
  • smch
  • vcforever

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo