首先,我对C++很陌生。C++运行可执行文件和管道输出到文件
我想完成以下任务:
- 执行以下命令:“SampleApp.exe -cf的test.xml”
- 我需要在隐藏模式下执行
- 我需要的外壳C++应用程序要等到SampleApp完成
- 如果SampleApp的时间超过X量需要更长的时间,那么我需要过程
- 我想管SampleApp的输出终止到文件(sample.log)
到目前为止,我有以下几点:
SHELLEXECUTEINFO lpExecInfo;
lpExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
lpExecInfo.lpFile = L"SampleApp.exe";
lpExecInfo.fMask = SEE_MASK_DOENVSUBST|SEE_MASK_NOCLOSEPROCESS;
lpExecInfo.hwnd = NULL;
lpExecInfo.lpVerb = L"open";
lpExecInfo.lpParameters = L"-cf test.xml";
lpExecInfo.lpDirectory = NULL;
lpExecInfo.nShow = SW_HIDE; // hide shell during execution
lpExecInfo.hInstApp = (HINSTANCE) SE_ERR_DDEFAIL;
ShellExecuteEx(&lpExecInfo);
// wait until the process is finished
if (lpExecInfo.hProcess != NULL)
{
::WaitForSingleObject(lpExecInfo.hProcess, INFINITE);
::CloseHandle(lpExecInfo.hProcess);
}
上面的代码实现了一切,除了管道输出到文件。 但是,我似乎不可能与ShellExecute。 看来我需要使用CreateProcess来代替。 我希望有更多C++经验的人能够向我提供我的代码和管道输出的CreateProcess等价物。如果没有,至少要确认我想做的事情是可能的,并指出我的方向是正确的。
- 感谢
互联网上有多个例子(包括本站),它展示了如何使用'CreateProcess'来创建子进程,其中父进程从子进程捕获输出。 –
是的,我知道,但似乎CreateProcess比ShellExecute要复杂得多,我发现的例子也有不同程度的复杂性。我希望根据自己的需求或甚至一些很好的示例代码得到一些建议,以完成我需要的或我需要的一些内容。 –