l i n u x - u s e r s - g r o u p - o f - d a v i s
L U G O D
 
Next Meeting:
September 2: Social gathering
Next Installfest:
TBD
Latest News:
Aug. 18: Discounts to "Velocity" in NY; come to tonight's "Photography" talk
Page last updated:
2001 Dec 30 17:05

The following is an archive of a post made to our 'vox-tech mailing list' by one of its subscribers.

Report this post as spam:

(Enter your email address)
Re: [vox-tech] How to check for data coming in STDIN
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [vox-tech] How to check for data coming in STDIN



Ah, I get it

----- Original Message -----
From: <jdnewmil@dcn.davis.ca.us>
To: <vox-tech@franz.mother.com>
Sent: Thursday, June 21, 2001 10:42 AM
Subject: Re: [vox-tech] How to check for data coming in STDIN


> On Thu, 21 Jun 2001, Jay Strauss wrote:
>
> > Actually, I don't get it (well I get it enough to use in my code,
but...)
> >
> > -t  Filehandle is opened to a tty.
> >
> > What does this mean?
>
> If the filehandle is a tty, it returns true.
>
> >  I suppose I don't understand what a "tty" is.
>
> An interactive device.  That is, it is used for both input and output,
> even though the filehandle being tested may only correspond to one of
> those directions.
>
> >  I'd
> > think "-t" would return a 0 if I wasn't piping something in on STDIN, vs
> > returning a 1 when no STDIN
>
> STDIN is always open, unless you close it. The only question is what it is
> connected to... an interactive terminal, or a pipe/file/other device.
> "-t" returns 1 for the former, or 0 otherwise.
>
> >
> > Jay
> >
> >
> > ----- Original Message -----
> > From: "Micah Cowan" <micah@cowanbox.com>
> > To: <vox-tech@franz.mother.com>
> > Sent: Wednesday, June 20, 2001 6:30 PM
> > Subject: Re: [vox-tech] How to check for data coming in STDIN
> >
> >
> > > On Wed, Jun 20, 2001 at 06:06:39PM -0500, Jay Strauss wrote:
> > > > In perl, if I have a pgm:
> > > >
> > > > while (<>) {
> > > >     print "this is the line: $_";
> > > > }
> > > >
> > > > normally I'd invoke the pgm like:
> > > >
> > > > echo "repeat this line" | ./pgm
> > > >
> > > > But if I accidentally invoke it like:
> > > >
> > > > ./pgm
> > > >
> > > > How would I prevent the while loop from running (i.e. pseudocode):
> > > >
> > > > while (<>) if (exists <STDIN>) {
> > > >     print "$_";
> > > > }
> > >
> > > Well, that won't work - and the while (<>) actually does that for you
> > > automatically anyway.
> > >
> > > It won't work though because STDIN /does/ exist.  It's the interactive
> > > tty by default (when it's not getting a redirected input).
> > >
> > > You can exploit /that/ fact, though, by doing this (tested):
> > >
> > > -------
> > > #!/usr/bin/perl -w
> > >
> > > die "Hey!  I was expecting a redirected STDIN!\n" if (-t);
> > > print "this is the line: $_" while (<>);
> > > -------
> > >
> > > The -t test evaluates to true if it's argument is a tty - if no arg is
> > > given, STDIN is assumed.
> > >
> > > Micah
> >
> >
> > _________________________________________________________
> > Do You Yahoo!?
> > Get your free @yahoo.com address at http://mail.yahoo.com
> >
>
> --------------------------------------------------------------------------
-
> Jeff Newmiller                        The     .....       .....  Go
Live...
> DCN:<jdnewmil@dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live
Go...
>                                       Live:   OO#.. Dead: OO#..  Playing
> Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
> AAAAACNBQAABAAAAJEFAAAAAAAAkQUAAAAAAACRBQAAAAAAAPcPAAAAAAAA
>
cQYAAAAAAADSAgAAAAAAANICAAAAAAAAfgQAAAAAAAAAAAAAAAAAAH4EAAAPAQAAfgQAAAAAAABx
> BgAAAAAAAHEGAAAA


_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com


LinkedIn
LUGOD Group on LinkedIn
Sign up for LUGOD event announcements
Your email address:
facebook
LUGOD Group on Facebook
'Like' LUGOD on Facebook:

Hosting provided by:
Sunset Systems
Sunset Systems offers preconfigured Linux systems, remote system administration and custom software development.

LUGOD: Linux Users' Group of Davis
PO Box 2082, Davis, CA 95617
Contact Us

LUGOD is a 501(c)7 non-profit organization
based in Davis, California
and serving the Sacramento area.
"Linux" is a trademark of Linus Torvalds.

Sponsored in part by:
Appahost Applications
For a significant contribution towards our projector, and a generous donation to allow us to continue meeting at the Davis Library.