bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

waiting for process in process substitution


From: Brian J. Murrell
Subject: waiting for process in process substitution
Date: Wed, 14 Mar 2007 19:05:00 -0400

I have a need to have a bash script communicate with another process, so
I start my other process using Process Substitution and echo commands to
it as such:

        exec 3> >(cat)
        echo "foo" >&3
        exec 3>&-
        exit

This is of course an oversimplification of what I'm doing but provides
for a very simple example.

The problem I'm running into is that the process that I am running in my
substitution can take a while to run and I want my main process to wait
for it to be done before it exits:

        exec 3> >(sleep_10; cat)
        /bin/echo "foo" >&3
        /bin/echo \004 >&3      # just to illustrate that the cat should exit 
here
        exec 3>&-
        # wait for cat to finish
        exit

Other than playing some trickery in the substitution sub-shell to create
a file and then remove it on start and spinning in the main process
while the file exists, I can't find a way to synchronize the two
processes.

So this works:

        exec 3> >(touch foo; sleep_10; cat; rm -f foo)
        /bin/echo "foo" >&3
        /bin/echo \004 >&3      # just to illustrate that the cat should exit 
here
        exec 3>&-
        while [ -f foo ]; do
            sleep 1
        done
        exit

But it's just so ugly.

For what it's worth, the process in the substitution is expect and what
I am feeding it from the script is an expect script.

Any ideas?

b.

-- 
My other computer is your Microsoft Windows server.

Brian J. Murrell

Attachment: signature.asc
Description: This is a digitally signed message part


reply via email to

[Prev in Thread] Current Thread [Next in Thread]