Как заставить ввод от tty - PullRequest
1 голос
/ 05 мая 2010

Я хотел бы написать программу, которая читает пользовательский ввод только из tty, вместо перенаправленных каналов stdin, как passwd и ssh do Есть ли подход?

Большое спасибо

Ответы [ 2 ]

2 голосов
/ 05 мая 2010

Вы должны попробовать открыть /dev/tty напрямую. Это единственный способ, которым я точно знаю, что вы можете обойти перенаправление stdin.

/dev/tty обычно является символической ссылкой на ваше фактическое tty устройство, которое может быть /dev/console или /dev/tty24 или почти всем, что вы хотите, в зависимости от странного и замечательного способа, которым ваша система может быть настроенным. Команда tty должна быть в состоянии сказать вам, какая она есть (как и список самой символической ссылки с ls -al /dev/tty).

Но пока вы открываете dev/tty для ввода, он должен получать ввод от вашего терминала, а не от стандартного потока ввода, который мог быть перенаправлен.

1 голос
/ 05 мая 2010

Вы можете попробовать isatty (man 3 isatty) в сочетании с fileno ():

   #include <unistd.h>

   int isatty(int fd);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...