相同的程序创建进程,在Visual Studio 2005下无法正常运行,而Visual C++6.0环境下OK,Why??
函数实现代码如下
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
STARTUPINFO si;
memset(&si,0,sizeof(STARTUPINFO));
si.cb=sizeof(STARTUPINFO);
// si.dwFlags=STARTF_USESHOWWINDOW;
// si.wShowWindow=SW_SHOW;
PROCESS_INFORMATION pi;
memset(&pi,0,sizeof(pi));
if(!CreateProcess(NULL,
TEXT("G:\\program\\debug\\test2.exe cmdline"),
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi))
{
cout <<"Create Fail!" <<endl;
getchar();
exit(1);
}
else
{
cout <<"Success!" <<endl;
// getchar();
return(0);
}
}
编译能够通过,但是运行时会出现错误提示:
pipe_test.exe 中的 0x7c825352 处未处理的异常: 0xC0000005: 写入位置 0x004182a0 时发生访问冲突
程序无法正常运行。而在帮助里提供的例程也是类似的写法。
如果把CreateProcess函数写成
CreateProcess(TEXT("G:\\program\\debug\\test2.exe"),
TEXT(" cmdline"),
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi)
那么一切正常(其中调用的程序test2.exe需要输入参数)
而上两种写法的程序在Visual C++6.0下都能正常编译运行(去掉了TEXT(....))。
请问高手,这是何故?感谢~~~