[linux] Re: hoe stdout en stdin van een subshell wijzigen?

Bram Mertens bram.mertens op sofico.be
Wo Mrt 7 10:42:02 CET 2007


linux-bounce op lists.nllgg.nl wrote on 03/06/2007 06:56:43 PM:
> On Tue, Mar 06, 2007 at 04:43:18PM +0100, Bram Mertens wrote:
> > Hi
> > Ik ben momenteel op zoek naar een mooiere oplossing voor onderstaand 
> > probleem.  Ik geraak maar niet wijs uit het redirecten van de 
> > verschillende file descriptors...
> Heb je de manpagina gelezen?

Welke manpage?

> <snip>
> 
> > Momenteel gebruiken we het volgende:
> > while true
> > do
> >         sleep 1
> >         echo y
> >         sleep 70
> >         echo y
> >         echo "aborted" >> $ERRFILE
> >         break
> > done | budb -opties >> $LOGFILE
> 
> Waarom al die sleeps en niet gewoon direct de "y" door sturen. Of
> beter, geeft budb een status terug, want dan kan je dit doen:
> 
> if ! (yes | budb -options >>$LOGFILE) ; then
>   echo "er is iets mis gegaan" >>$ERRFILE
> fi

Aangezien budb maar tweemaal om input vraagt op z'n stdin leek dit 
voldoende.  Eenzelfde constructie werd al eerder in het script gebruikt 
(is al door meerder mensen bewerkt) en werkt zonder problemen.

Maar dit is inderdaad veel eenvoudiger en lijkt goed te werken. 
"Overtollige" input op stdin wordt dus blijkbaar gewoon genegeerd, 
prachtig.

Bedankt, ik ga dit zo implementeren en verder testen.

Toch nog een vraagje: waarom geeft yes geen broken pipe melding?  yes 
schrijft 'y'tjes tot je Ctrl+C ingeeft, is dit omdat de stdin file 
descriptor afgesloten wordt zodra de andere zijde van de pipe stopt?

Bram




More information about the Linux mailing list