I am looking into using IPC::Run to replace an experimental wrapper script I have been designing which uses IPC::Open3 and IO::Select to interact with a 4GL executable on Linux. The ultimate script with be a Mason wrapper component to enable 4GL applications running on a Linux server to interact using the web as a client virtual console. I wrote the 4GL compiler, so I can alter the code it generates to send signals to the Perl wrapper, and I have done so with the experimental wrapper. (I first send the parent PID from the wrapper script to the 4GL app child via a fifo, so that the child can send USR1 and USR2 signals to the wrapper). This experimental script works mostly, but unreliably as the app's STDOUT or STDERR blocks sometimes in a way I haven't been able to figure out.
When I saw your IPC::Run, I figured it might be a better solution, so I am starting to code a replacement wrapper with it.
The question is, will I still have to use signals from the 4GL app child to the wrapper, or will IPC::Run somehow manage the synchronization to avoid blocking (i.e. if I use start, pump, finish). If I need to signal the child (directly no anonymously), how to I access the child PID from the harness or start?
Any suggestions and recommendations would be greatly appreciated. Thanks in advance.
--
Joseph 'Bear' Thames
Meta Software Engineering
Tel: (408) 873-0658
bear@metacalculus.net