如何从tty强制输入

时间:2010-05-05 08:24:18

标签: c input tty

我想编写一个只从tty读取用户输入的程序,而不是重定向的stdin管道,如 passwd ssh 。有什么办法吗?

非常感谢

2 个答案:

答案 0 :(得分:2)

您应该尝试直接打开/dev/tty。这是我确定您可以绕过stdin重定向的唯一方法。

/dev/tty通常是指向实际 tty设备的符号链接,可能是/dev/console/dev/tty24,也可能是您想要的任何内容,具体取决于您的系统可能会设置奇怪而精彩的方式。 tty命令应该能够告诉您它是哪一个(将列出符号链接本身与ls -al /dev/tty)。

但只要你打开dev/tty输入,就应该从你的终端获得输入而不是标准输入流,这可能已被重定向。

答案 1 :(得分:1)

你可以和fileno()一起尝试isatty(man 3 isatty):

   #include <unistd.h>

   int isatty(int fd);