首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

关于createprocess()总不能成功创建子程序~解决方案

2012-03-06 
关于createprocess()总不能成功创建子程序~下面是我的代码,每次运行都是提示, create child process faile

关于createprocess()总不能成功创建子程序~
下面是我的代码,每次运行都是提示, create child process failed。 ~~~~ 求助。 是不是那个createprocess第二个参数的问题,我vs2010, 使用多字符编码,没用Unicode!!
  HANDLE hreadFW = NULL; // 供主程序写,子程序读的管道
HANDLE hwriteFW = NULL;
SECURITY_ATTRIBUTES saFW;
saFW.bInheritHandle = TRUE;
saFW.lpSecurityDescriptor = NULL;
saFW.nLength = sizeof(SECURITY_ATTRIBUTES);
if (!CreatePipe(&hreadFW,&hwriteFW,&saFW,0))
{
AfxMessageBox("Create Pipe For Father Proc Write, Child Proc Read Failed!",IDOK,0);
return;
}
HANDLE hreadCW = NULL; //供子程序写,主程序读的管道
HANDLE hwriteCW = NULL;
SECURITY_ATTRIBUTES saCW;
saCW.bInheritHandle = TRUE;
saCW.lpSecurityDescriptor = NULL;
saCW.nLength = sizeof(SECURITY_ATTRIBUTES);
if (!CreatePipe(&hreadCW,&hwriteCW,&saCW,0))
{
AfxMessageBox("Create Pipe For Child Proc Write, Father Proc Read Failed!",IDOK,0);
return;
}


STARTUPINFO sui; //以下创建子程序
ZeroMemory(&sui,sizeof(STARTUPINFO));
sui.cb = sizeof(STARTUPINFO);
sui.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
sui.hStdInput = hreadFW;
sui.hStdOutput = sui.hStdError = hwriteCW;
PROCESS_INFORMATION pi;
ZeroMemory(&pi, sizeof(PROCESS_INFORMATION)); 
CString str = "CMDA_Implement.exe";
LPSTR szCommandLine = (LPSTR)(LPCTSTR)str;
if (!CreateProcess(NULL,szCommandLine,NULL,NULL,1,0,NULL,NULL,&sui,&pi))
{ // CMDA_Implement.exe 是我另外编译好的程序,放在此程序的主文件夹里

CloseHandle(hreadFW);
CloseHandle(hwriteCW);
CloseHandle(hreadCW);
CloseHandle(hwriteFW);
hwriteCW = NULL;
hreadFW = NULL;
hwriteFW = NULL;
hreadCW = NULL;
AfxMessageBox("Create Child Proc Failed!",IDOK,0);

return;
  }

[解决办法]
估计是路径的问题
把szCommandLine换成绝对路径试试
[解决办法]
失败后GetLastError();
查看错误码
[解决办法]

探讨
引用:
估计是路径的问题
把szCommandLine换成绝对路径试试


试过了,我把 str = “CDMA_Implement.exe”;
改为 str = “D:\\CDMA_Implement.exe"

还是不行,同样提示 create child process failed。

[解决办法]
TCHAR szCommandLine[]=TEXT("D:\\CDMA_Implement.exe");
CreateProcess(0,szCommandLine,0,0,1,0,0,0,&sui,&pi)
[解决办法]
pipe通信的时候要做同步

热点排行