我想编写一个程序,它只从 tty 读取用户输入,而不是像passwd和ssh那样重定向标准输入管道。有什么办法吗?
非常感谢
您应该尝试直接打开/dev/tty
。这是我确定可以绕过stdin
重定向的唯一方法。
/dev/tty
通常是到您的实际tty 设备的符号链接,它可能是/dev/console
或/dev/tty24
几乎是您想要的任何东西,这取决于您的系统可能设置的奇怪而奇妙的方式。该tty
命令应该能够告诉您它是哪一个(将使用 列出符号链接本身ls -al /dev/tty
)。
但只要您打开dev/tty
输入,它应该从您的终端而不是标准输入流中获取输入,标准输入流可能已被重定向。
您可以将 isatty(man 3 isatty) 与 fileno() 结合使用:
#include <unistd.h>
int isatty(int fd);