buffering pipes
Giorgos Keramidas
keramida at ceid.upatras.gr
Mon Apr 16 16:08:04 EEST 2007
On 2007-04-16 15:44, Nick Demou <ndemou at gmail.com> wrote:
> Οπότε η λύση ειναι αναγκαστικά το script. π.χ. σαν αυτό:
> ---------------------------------------------
> #!/bin/bash
>
> TMPF="/tmp/buf`cat /proc/sys/kernel/random/uuid`"
> #echo "Start collecting input `date`"
>
> while read BUFFER
> do
> echo "$BUFFER" >> $TMPF
> done
>
> #echo "Start generating output `date`"
> cat $TMPF | my_program
> rm -f $TMPF
> ---------------------------------------------
Ένας πιο portable τρόπος για temporary filename είναι:
TMPDIR="${TMPDIR-/var/tmp}"
export TMPDIR
cleanup()
{
if [ -n "${TMPF}" ]; then
/bin/rm -f "${TMPF}"
fi
}
trap "cleanup ; exit 1" 1 2 15
trap "cleanup ; exit 0" 0
TMPF=`mktemp "${TMPDIR}/buf-XXXXXX"`
if [ $? -ne 0 ]; then
echo >&2 "`basename $0`: ERROR: failed to create temporary file in ${TMPDIR}"
exit 1
fi
...
Αυτό θα παίξει σωστά και σε BSD/Solaris, που δεν έχουν virtual file με
όνομα /proc/sys/kernel/random/uuid, και θα σβήσει το temporary file όταν
τελειώσει (ή τερματιστεί με INT, HUP, ή TERM signal).
More information about the Linux-greek-users
mailing list