Mail Archives: cygwin/2002/07/26/04:31:44
On Thu, Jul 25, 2002 at 04:38:32PM -0400, Sam Steingold wrote:
> To check that stdin and stdout are the same TTYs,
> I use the following code on UNIX (all flavors)
>
> #define stdin_handle 0
> #define stdout_handle 1
>
> struct stat stdin_stat;
> struct stat stdout_stat;
> if ((fstat(stdin_handle,&stdin_stat) >= 0) &&
> (fstat(stdout_handle,&stdout_stat) >= 0))
> if ((stdin_stat.st_dev == stdout_stat.st_dev) &&
> (stdin_stat.st_ino == stdout_stat.st_ino))
> same_tty = true;
>
> it works just fine on all UNIX flavors except for cygwin which has
> different inodes:
>
> stdin_stat.st_ino =3989447614
> stdout_stat.st_ino=3413797845
>
> what's wrong with cygwin?
> or maybe my method is incorrect?
> so how do I check that 0 and 1 are the same tty?
On Cygwin st_ino is worthless as Chris pointed out already.
OTOH you can just use the value of st_dev to figure that out:
/dev/tty0 -> st_dev = 1280
/dev/tty1 -> st_dev = 1281
...
and when running in notty mode in a console window:
/dev/conin -> st_dev = 256
/dev/conout -> st_dev = 256
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Developer mailto:cygwin AT cygwin DOT com
Red Hat, Inc.
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -