Browse Source

add method to allow closing input/output/stderr pipe

git-svn-id: trunk@3096 -
micha 19 years ago
parent
commit
e8bb38a7e0
1 changed files with 25 additions and 11 deletions
  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);