[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Redirect a backgrounded process' stdout toward COPROC's stdin
From: |
Davide Baldini |
Subject: |
Redirect a backgrounded process' stdout toward COPROC's stdin |
Date: |
Sun, 03 Jun 2012 14:20:23 +0200 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.16) Gecko/20111110 Icedove/3.0.11 |
Machine: i486
OS: linux-gnu
Compiler: gcc
Compilation CFLAGS: -O2 -march='i486' (plus the flags added by Makefile)
uname output: Linux debianBunker 2.6.26-2-686 #1 SMP Wed Sep 21 04:35:47
UTC 2011 i686 GNU/Linux
Machine Type: i486-pc-linux-gnu
Bash Version: 4.2.0(5)-release
Patch Level: 5
Release Status: release
Description:
In the following test script I run an elementary coprocess to which the
echo built-in, run in background, attaches its standard-output:
#!/bin/bash
# TEST 1
coproc /bin/sleep 100
echo >&${COPROC[1]} &
The script always fails, for no apparent reason, giving the output:
./test.sh: line 4: ${COPROC[1]}: Bad file descriptor
I wonder if the correct syntax should be rather this one (ampersand
moved before redirection):
#!/bin/bash
# TEST 2
coproc /bin/sleep 100
echo & >&${COPROC[1]}
This second example seems to work since it reports no errors during
execution, but with this syntax, the redirection is not performed in
practice; in fact, consider this other test:
#!/bin/bash
# TEST 3
/bin/echo abc & >xfile
Test 3 creates the file xfile, but does not write anything into it.
Curiously, trying again to position the ampersand after the redirection
make the echo work fine:
#!/bin/bash
# TEST 4
/bin/echo abc >xfile &
Test 4 creates the file xfile with inside the string abc.
What's wrong with the coproc? And what's the correct position for the
ampersand, before redirection, or after?
- Redirect a backgrounded process' stdout toward COPROC's stdin,
Davide Baldini <=