Browse Source

fix handle type; close parent ends of pipes in child process

git-svn-id: trunk@3099 -
micha 19 years ago
parent
commit
7785471dd4
1 changed files with 7 additions and 2 deletions
  1. 7 2
      fcl/unix/process.inc

+ 7 - 2
fcl/unix/process.inc

@@ -196,7 +196,7 @@ end;
 
 Type
   TPipeEnd = (peRead,peWrite);
-  TPipePair = Array[TPipeEnd] of Integer;
+  TPipePair = Array[TPipeEnd] of cint;
 
 Procedure CreatePipes(Var HI,HO,HE : TPipePair; CE : Boolean);
 
@@ -284,12 +284,17 @@ begin
              ChDir(FCurrentDirectory);
           if PoUsePipes in Options then
             begin
+            fpclose(HI[peWrite]);
             fpdup2(HI[peRead],0);
+            fpclose(HO[peRead]);
             fpdup2(HO[peWrite],1);
             if (poStdErrToOutPut in Options) then
               fpdup2(HO[peWrite],2)
-            else
+            else 
+              begin
+              fpclose(HE[peRead]);
               fpdup2(HE[peWrite],2);
+              end
             end
           else if poNoConsole in Options then
             begin