diff options
| author | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2011-01-27 19:15:10 +0000 |
|---|---|---|
| committer | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2011-01-27 19:15:10 +0000 |
| commit | aadf5c02dc6444b540998197c634b9593f7b7873 (patch) | |
| tree | 9b22ddafa0dad0837e7f26f3a994cf6678512fd6 /packages/fcl-process | |
| parent | 0be984a30d881d9e1ebe8bc95e904453843c8503 (diff) | |
| download | fpc-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.pp | 13 | ||||
| -rw-r--r-- | packages/fcl-process/src/unix/process.inc | 2 |
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 |
