我的文件夹是这个的,-----SPMDS
-----debug
------SPMDS.exe
-----thesis
-----debug
------thesis.exe
-----dataofDB.data
-----resultofMining.data
现用在thesis的程序里调用spmds.exe,并且用到那两个data文件
我的程序是这样写的
STARTUPINFO si;
PROCESS_INFORMATION ProcessInformation;
si.wShowWindow = SW_SHOW;
memset(&si,0,sizeof(STARTUPINFO)); //数据初始化 char cmdName[] = "";
char cmdLine[] = "..\\SPMDS\\debug\\SPMDS.exe 50 179 ..\\DataOfDB.data ..\\ResultofMining.data";
if(CreateProcess(NULL,cmdLine,NULL,NULL,false,CREATE_NEW_CONSOLE,NULL,NULL,&si,&ProcessInformation))
printf("successed");
现在很奇怪的是感觉那个被调用的程序有时执行有时不执行,就是有时会一闪就过去了,总是打印successed,但是正常的情况下spmds.exe是要执行一段时间的,
不知道问题出在哪里,相对路径有没有写错呀,还是别的原因呀,大家帮看一看,高手们帮帮忙呀!在线等呀。
-----debug
------SPMDS.exe
-----thesis
-----debug
------thesis.exe
-----dataofDB.data
-----resultofMining.data
现用在thesis的程序里调用spmds.exe,并且用到那两个data文件
我的程序是这样写的
STARTUPINFO si;
PROCESS_INFORMATION ProcessInformation;
si.wShowWindow = SW_SHOW;
memset(&si,0,sizeof(STARTUPINFO)); //数据初始化 char cmdName[] = "";
char cmdLine[] = "..\\SPMDS\\debug\\SPMDS.exe 50 179 ..\\DataOfDB.data ..\\ResultofMining.data";
if(CreateProcess(NULL,cmdLine,NULL,NULL,false,CREATE_NEW_CONSOLE,NULL,NULL,&si,&ProcessInformation))
printf("successed");
现在很奇怪的是感觉那个被调用的程序有时执行有时不执行,就是有时会一闪就过去了,总是打印successed,但是正常的情况下spmds.exe是要执行一段时间的,
不知道问题出在哪里,相对路径有没有写错呀,还是别的原因呀,大家帮看一看,高手们帮帮忙呀!在线等呀。
PROCESS_INFORMATION ProcessInfo;
memset(&StartupInfo,0,sizeof(STARTUPINFO));
StartupInfo.cb=sizeof(STARTUPINFO);
StartupInfo.lpReserved=NULL;
StartupInfo.lpDesktop=NULL;
StartupInfo.lpTitle=NULL;
StartupInfo.dwFlags=STARTF_USESHOWWINDOW;
StartupInfo.cbReserved2=0;
StartupInfo.lpReserved2=NULL;
StartupInfo.wShowWindow=SW_SHOWNORMAL;CString filename;
((CEdit*)GetDlgItem(IDC_COMBO1))->GetWindowText(filename);
char strFileName[255];
sprintf(strFileName,"%s",filename);
bool bReturn=CreateProcess(NULL,strFileName,NULL,NULL,false,0,NULL,NULL,&StartupInfo,&ProcessInfo);
if(!bReturn)
MessageBox("进程创建失败!");
---------------------------
"..\\SPMDS\\debug\\SPMDS.exe 50 179 ..\\..\\DataOfDB.data ..\\..\\ResultofMining.data";
强,不过别搞错对象喔
{
STARTUPINFO si;
PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) ); // Start the child process.
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.
)
{
ErrorExit( "CreateProcess failed." );
} // Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE ); // Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}好像另外的没什么问题,把代码全帖出来吧