0
我想要創建一個子句進程的句柄繼承爲false和控制檯重定向。 爲了這個,我創建stdinput NAMEPIPE處理和繼承設置爲true這個手柄和結構添加它StartupinfoEX,我給CreateProcess的StartupinfoEX和控制檯重定向
的probleme是後發送,子進程得到正確的處理(我在進程資源管理器中檢查它)但是控制檯重定向沒有被分配(它看起來像前一個句柄沒有被分配給stdinput)!
時當然我使用的是非標準與STARTUPINFO繼承真正在CreateProcess的一切工作的偉大...
我的代碼
FServerPipe:= CreateNamedPipe時(....);
.........
si.StartupInfo.hStdInput := FServerPipe;
si.StartupInfo.hStdOutput := INVALID_HANDLE_VALUE;
si.StartupInfo.hStdError := INVALID_HANDLE_VALUE;
.........
UpdateProcThreadAttribute(...)
....... ..
CheckError(Not CreateProcess(
PChar(aPhpInterpreterFilename), // pointer to name of executable module
nil, // pointer to command line string
nil, // pointer to process security attributes
NiL, // pointer to thread security attributes
TrUE, // handle inheritance flag
CREATE_NO_WINDOW
or
EXTENDED_STARTUPINFO_PRESENT, // creation flags
Pchar(aEnvironment), // pointer to new environment block
nil, // pointer to current directory name
TStartupInfo(PStartupInfo(@si)^), // pointer to STARTUPINFO
fServerProcessInformation // pointer to PROCESS_INFORMATION
));
任何想法可能是什麼錯?
這只是您的代碼子集中的一小部分,可能會被視爲與您的問題相關。例如,設置STARTUPINFOEX的lpAttributeList成員的代碼在哪裏? – 2011-12-23 22:49:42
關於句柄繼承:http://blogs.msdn.com/b/oldnewthing/archive/2011/12/16/10248328.aspx – avakar 2011-12-24 08:33:15