Wie zu zwingen, eine Eingabe von tty
Frage
Ich möchte ein Programm schreiben, das nur von tty Benutzereingabe liest, statt umgeleiteter stdin Rohre, wie passwd und ssh tun. Gibt es einen Ansatz?
Vielen Dank
Lösung
Sie sollten direkt Öffnung /dev/tty
versuchen. Das ist die einzige Art, wie ich sicher wissen, dass Sie Bypass die stdin
Umleitung.
/dev/tty
ist in der Regel ein symbolischer Link zu Ihrem ist tty-Gerät, das /dev/console
oder /dev/tty24
sein kann, oder so ziemlich alles, was Sie wollen, abhängig von dem seltsamen und wunderbaren Weg, um Ihr System eingerichtet werden kann. Der tty
Befehl sollte in der Lage sein, Ihnen zu sagen, welche es (als Wille den symbolischen Link selbst mit ls -al /dev/tty
Listing) ist.
Aber solange man offen dev/tty
für die Eingabe, soll es die Eingabe von Ihrem Terminal bekommt anstatt der Standardeingabe-Stream, die umgeleitet wurden.
Andere Tipps
Sie können versuchen, isatty (Mann 3 isatty) in Verbindung mit fileno ():
#include <unistd.h>
int isatty(int fd);