SECURITY_ATTRIBUTES sa;
HANDLE hRead, hWrite;
std::string result;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = FALSE;//TRUE;
if (!CreatePipe(&hRead,&hWrite,&sa,0)) {
cout << "创建管道失败!" << endl;
return FALSE;
}
STARTUPINFO si = {0};
si.cb = sizeof(si);
si.dwFlags |= STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; // 使用默认的IO句柄
si.hStdOutput = hWrite;
si.hStdError = hWrite;
si.wShowWindow = SW_SHOWNORMAL; // 隐藏控制台窗口
PROCESS_INFORMATION pi = {0};
TCHAR para[100] = L"cmd.exe /c tree";
if (!CreateProcess(NULL, para, NULL, NULL, TRUE, NULL, NULL, NULL, &si, &pi))
{
cout << "创建进程失败!" << endl;
return FALSE;
}
运行完CreateProcess之后出现提示:
Tree Walk Utility已停止工作
如果sa.bInheritHandle = TRUE, 就OK.
想请教个中原因, 不胜感激!