[fpc-pascal] Incorrect Process startup

Steve Gatenby steveg at nevets.com.au
Tue Nov 8 06:18:57 CET 2016


Thanks Ewald - will follow this up - much appreciated

On 08/11/16 07:40, Ewald wrote:
> On 06/11/16 23:50, Steve Gatenby wrote:
>> run wmctrl (or other) from the TProcess / RunCommand code
>> the TProcess instance returns the PID for the new process
>> read the relevant file under /proc/PID/status - it will intermittently
>> show the new process is actually a copy of the caller app.
>> (meaning: the orig app is called Test1, I try to run wmctrl, I end up
>> with 2 copies of Test1 running)
>
> Actually, this is quite exactly what I would expect here. Spawning a new
> process on unix is actually a two step thingie:
> 	- First fork(), which duplicates the current process
> 	- The child then exec()'s, replacing its current process image
>           with a new one (which would be the target executable in your
>           case)
>
> It is important to note that a lot of the parent process is preserved by
> the child process. On such example are file descriptors, which are not
> closed automatically for you. It is actually via this mechanism that
> pipes to and from child processes can be established with relative ease.
>
> More on this subject can be found at
> 	https://en.wikipedia.org/wiki/Fork%E2%80%93exec
> 	https://linux.die.net/man/2/clone
> 	https://linux.die.net/man/2/fork
> 	https://linux.die.net/man/3/exec
>
>> I have found through experimenting:
>>
>> a pause of 100ms after running the process will fix 80% of cases.
>
> Probably because the child has exec'ed by this time, if I had to guess.
>
>



More information about the fpc-pascal mailing list