相同的程序创建进程,在Visual Studio 2005下无法正常运行,而Visual C++6.0环境下OK,Why??

violet_sncl 2010-05-31 02:31:17
函数实现代码如下
#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(....))。

请问高手,这是何故?感谢~~~
...全文
53 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
bragi523 2010-06-01
  • 打赏
  • 举报
回复
应该这么写吧
TEXT("\"G:\\program\\debug\\test2.exe\" cmdline")
violet_sncl 2010-06-01
  • 打赏
  • 举报
回复
为什么没人回答?
自己顶!

15,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧