This is the mail archive of the
cygwin@sourceware.cygnus.com
mailing list for the Cygwin project.
b17.1: Can't read without echo from /dev/tty
- To: gnu-win32 at cygnus dot com
- Subject: b17.1: Can't read without echo from /dev/tty
- From: Assar Westerlund <assar at sics dot se>
- Date: 01 Feb 1997 18:40:28 +0100
When using b17.1 under NT 3.51, I discovered that /dev/tty behaves
differently from stdin. When trying to read from /dev/tty with echo
turned off, it just hangs. The same program works fine with stdin.
This test case works:
----------------------------------------------------------------------
#include <stdio.h>
#include <unistd.h>
#include <termios.h>
int main ()
{
struct termios t;
char str[256];
FILE *f = stdin;
if (tcgetattr (fileno(f), &t))
perror ("tcgetattr");
t.c_lflag &= ~ECHO;
if (tcsetattr (fileno(f), TCSANOW, &t))
perror ("tcsetattr");
fgets (str, sizeof(str), f);
t.c_lflag |= ECHO;
if (tcsetattr (fileno(f), TCSANOW, &t))
perror ("tcsetattr");
return 0;
}
----------------------------------------------------------------------
And this test case just hangs:
----------------------------------------------------------------------
#include <stdio.h>
#include <unistd.h>
#include <termios.h>
int main ()
{
struct termios t;
char str[256];
FILE *f = fopen("/dev/tty", "r");
if (tcgetattr (fileno(f), &t))
perror ("tcgetattr");
t.c_lflag &= ~ECHO;
if (tcsetattr (fileno(f), TCSANOW, &t))
perror ("tcsetattr");
fgets (str, sizeof(str), f);
t.c_lflag |= ECHO;
if (tcsetattr (fileno(f), TCSANOW, &t))
perror ("tcsetattr");
return 0;
}
----------------------------------------------------------------------
-
For help on using this list, send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".