我想编写一个只从tty读取用户输入的程序,而不是重定向的stdin管道,如 passwd 和 ssh 。有什么办法吗?
非常感谢
答案 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);