管道重定向子进程输入时的错误
首先我把代码贴出来吧.
sa.nLength:= SizeOf(sa); sa.lpSecurityDescriptor:= nil; sa.bInheritHandle:= True; if not CreatePipe(hOutRead, hOutWrite, @sa, 0) then begin ShowMessage('CreatePipe Error!!!'); Exit; end; ZeroMemory(@Buf[0],1024); ZeroMemory(@si, SizeOf(si)); si.cb:= SizeOf(si); si.dwFlags:= STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES; si.wShowWindow:= SW_HIDE; si.hStdOutput:= hOutWrite; si.hStdError:= hOutWrite; if not CreateProcess(nil,'E:\MinGW\Bin\gcc.exe c:\2_3.c -o c:\2_3.exe -O2 -Wall -lm -DONLINE_JUDGE',nil,nil,True,CREATE_NEW_CONSOLE,nil,nil,si,pi) then begin ShowMessage('CreateProcess Error!!!'); Exit; end; case WaitForSingleObject(pi.hProcess, 2000) of WAIT_OBJECT_0: begin CloseHandle(hOutWrite) ; if ReadFile(hOutRead,Buf, 1024, dwCount, nil) then begin ShowMessage('GetReadBack: ' + StrPas(PChar(@buf[0]))); end else begin dwCount:= GetLastError; ShowMessage(IntToStr(dwCount)); end; end; WAIT_TIMEOUT: TerminateProcess(pi.hProcess, 100); end; CloseHandle(pi.hProcess); CloseHandle(pi.hThread);