Переглянути джерело

Merged revisions 3096 via svnmerge from
svn+ssh://svn.freepascal.org/FPC/svn/fpc/trunk

........
r3096 | micha | 2006-03-31 21:09:42 +0200 (vr, 31 mrt 2006) | 1 line

add method to allow closing input/output/stderr pipe
........

git-svn-id: branches/fixes_2_0@3098 -

micha 19 роки тому
батько
коміт
3bfff8138c
1 змінених файлів з 25 додано та 11 видалено
  1. 25 11
      fcl/inc/process.pp

+ 25 - 11
fcl/inc/process.pp

@@ -90,10 +90,14 @@ Type
     FStderrStream : TInputPipeStream;
     procedure CloseProcessHandles; virtual;
     Procedure CreateStreams(InHandle,OutHandle,ErrHandle : Longint);virtual;
+    procedure FreeStream(var AStream: THandleStream);
   Public
     Constructor Create (AOwner : TComponent);override;
     Destructor Destroy; override;
     Procedure Execute; virtual;
+    procedure CloseInput; virtual;
+    procedure CloseOutput; virtual;
+    procedure CloseStderr; virtual;
     Function Resume : Integer; virtual;
     Function Suspend : Integer; virtual;
     Function Terminate (AExitCode : Integer): Boolean; virtual;
@@ -156,17 +160,6 @@ begin
 end;
 
 Procedure TProcess.FreeStreams;
-
-  procedure FreeStream(var S: THandleStream);
-
-  begin
-    if (S<>Nil) then
-      begin
-      FileClose(S.Handle);
-      FreeAndNil(S);
-      end;
-  end;
-
 begin
   If FStderrStream<>FOutputStream then
     FreeStream(FStderrStream);
@@ -203,6 +196,27 @@ begin
     FStderrStream:=TInputPipeStream.Create(ErrHandle);
 end;
 
+procedure TProcess.FreeStream(var AStream: THandleStream);
+begin
+  if AStream = nil then exit;
+  FileClose(AStream.Handle);
+  FreeAndNil(AStream);
+end;
+
+procedure TProcess.CloseInput;
+begin
+  FreeStream(FInputStream);
+end;
+
+procedure TProcess.CloseOutput;
+begin
+  FreeStream(FOutputStream);
+end;
+
+procedure TProcess.CloseStderr;
+begin
+  FreeStream(FStderrStream);
+end;
 
 Procedure TProcess.SetWindowColumns (Value : Cardinal);