I wrote a couple of functions to automate assigning a (share) and a (semaphore) and blocking when ready to get the data from the child process. It only works on unix/osx, though, since it uses fork and releases the share.
To avoid having to quote arguments to the expression passed, since it is getting wrapped in other commands. Also, in the version that I use, I have some extra stuff in there that uses unify to match against what is returned and eval other params based on which phrase matches (like ML).
Jeff
=====
Old programmers don't die. They just parse on...