summaryrefslogtreecommitdiff
path: root/packages/fcl-process
diff options
context:
space:
mode:
authormarco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-01-27 19:15:10 +0000
committermarco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-01-27 19:15:10 +0000
commitaadf5c02dc6444b540998197c634b9593f7b7873 (patch)
tree9b22ddafa0dad0837e7f26f3a994cf6678512fd6 /packages/fcl-process
parent0be984a30d881d9e1ebe8bc95e904453843c8503 (diff)
downloadfpc-aadf5c02dc6444b540998197c634b9593f7b7873.tar.gz
* Patch from #18617 Forkevent from Seth Grover.
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@16822 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/fcl-process')
-rw-r--r--packages/fcl-process/src/process.pp13
-rw-r--r--packages/fcl-process/src/unix/process.inc2
2 files changed, 15 insertions, 0 deletions
diff --git a/packages/fcl-process/src/process.pp b/packages/fcl-process/src/process.pp
index 9b533a9951..d1bf834535 100644
--- a/packages/fcl-process/src/process.pp
+++ b/packages/fcl-process/src/process.pp
@@ -41,6 +41,10 @@ Type
Type
+ {$ifdef UNIX}
+ TProcessForkEvent = procedure;
+ {$endif UNIX}
+
TProcess = Class (TComponent)
Private
FProcessOptions : TProcessOptions;
@@ -58,6 +62,9 @@ Type
FEnvironment : Tstrings;
FShowWindow : TShowWindowOptions;
FInherithandles : Boolean;
+ {$ifdef UNIX}
+ FForkEvent : TProcessForkEvent;
+ {$endif UNIX}
FProcessPriority : TProcessPriority;
dwXCountchars,
dwXSize,
@@ -113,6 +120,9 @@ Type
Property Stderr : TinputPipeStream Read FStderrStream;
Property ExitStatus : Integer Read GetExitStatus;
Property InheritHandles : Boolean Read FInheritHandles Write FInheritHandles;
+ {$ifdef UNIX}
+ property OnForkEvent : TProcessForkEvent Read FForkEvent Write FForkEvent;
+ {$endif UNIX}
Published
Property Active : Boolean Read GetRunning Write SetActive;
Property ApplicationName : String Read FApplicationName Write SetApplicationName;
@@ -163,6 +173,9 @@ begin
FProcessPriority:=ppNormal;
FShowWindow:=swoNone;
FInheritHandles:=True;
+ {$ifdef UNIX}
+ FForkEvent:=nil;
+ {$endif UNIX}
FEnvironment:=TStringList.Create;
end;
diff --git a/packages/fcl-process/src/unix/process.inc b/packages/fcl-process/src/unix/process.inc
index 6ef47ab490..d20e116115 100644
--- a/packages/fcl-process/src/unix/process.inc
+++ b/packages/fcl-process/src/unix/process.inc
@@ -360,6 +360,8 @@ begin
safefpdup2(fd,1);
safefpdup2(fd,2);
end;
+ if Assigned(FForkEvent) then
+ FForkEvent;
if (poRunSuspended in Options) then
sigraise(SIGSTOP);
if FEnv<>Nil then