【发布时间】:2012-11-29 23:47:18
【问题描述】:
我正在尝试使用以下命令创建子进程:
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
CreateProcess( NULL, // No module name (use command line)
NULL, // 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 );
它在这里崩溃了,我不知道为什么。
-
现在我的原始进程需要命令行参数,所以我也必须在这里传递它们吗?如果是这样,那么由于我没有从 int main() 创建子进程,所以我可以执行以下操作:
LPTSTR szCmdline = TEXT("nmctest -s TS -r DMR -tlLDMR");
然后在 CreateProcess() 中传递 szCmdline?
有人可以帮我解释一下为什么会崩溃吗?
【问题讨论】:
-
是的,我尝试通过 szCmdline,但它仍然崩溃,但为什么?
-
您可能还想向我们展示您如何声明和初始化
si和pi。 -
FWIW
STARTUPINFO si = {0};是对结构进行零初始化的惯用方式。不需要ZeroMemory。