我正在尝试使用CreateProcess
启动一个子进程,但是我不断得到error 2
,根据文档,该文件未找到。
我的代码如下所示:
if (!(CreateProcess(LPCTSTR("test.exe") ,NULL ,NULL,NULL,FALSE ,0 ,NULL ,NULL ,&producer_si
,&producer)))
{
printf("Create process failed!(%d)\n", GetLastError());
}
Where test.exe
是我之前创建的可执行程序。子进程非常简单,代码如下:
void _tmain (int argc, TCHAR* argv[])
{
printf("%s\n", "hello!");
}
test.exe
也可以在与父进程相同的文件夹中找到。我不明白为什么我总是收到错误代码 2。
错误2是ERROR_FILE_NOT_FOUND
。正如其他人告诉你的那样,你依赖的是relative当您需要使用路径时absolute路径代替。
Also, LPCTSTR("test.exe")
不是有效代码。如果UNICODE
被定义为,CreateFile()
映射到CreateFileW()
, and LPCTSTR
映射到LPCWSTR
ie const wchar_t*
。你不能输入char*
to a wchar_t*
并最终得到有意义的数据。如果你想使用TCHAR
- 敏感文字,使用TEXT()
相反,宏,例如:
if (!CreateProcess(TEXT("full path to\\test.exe"), ...))
否则,忘记使用TCHAR
只需编写特定于 Ansi 或特定于 Unicode 的代码即可,具体取决于您的需求:
if (!CreateProcessA("full path to\\test.exe", ...))
if (!CreateProcessW(L"full path to\\test.exe", ...))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)