1
A
回答
2
你應該嘗試直接打開/dev/tty
。這是我確信你可以繞過stdin
重定向的唯一途徑。
/dev/tty
通常是一個符號鏈接到您的實際 tty設備,這可能是你想要/dev/console
或/dev/tty24
或幾乎任何東西,這取決於你的系統可能會成立了神祕和奇妙的方式。 tty
命令應該能夠告訴你它是哪一個(如將ls -al /dev/tty
列出符號鏈接本身)。
但只要你打開dev/tty
輸入,它應該從你的終端,而不是標準輸入流,這可能已被重定向輸入。
1
您可以結合嘗試isatty(男子3 isatty)用的fileno():
#include <unistd.h>
int isatty(int fd);
的/ dev/tty的是不是一個真正的符號鏈接,但它是它的內核使用意味着一個真正的設備文件試圖使用它的過程的控制終端。控制終端是你想要的東西,比如密碼和更少的按鍵。 – nategoose 2010-05-05 18:21:16
也許這是一件Linux事物,@ nategoose。我似乎記得它顯示爲「TTY - > ttyd9」在一些UNIX系統(符號鏈接),並確實用下流的手段像temorarily替換的/ dev/tty的一個真正的文件,以便使用則fopen程序(的/ dev/tty的)方法,我建議將讀取我的文件(用於自動化,當然,需要root權限)。 – paxdiablo 2010-05-05 18:37:09