Bernd Brodesser wrote:
* Eilert Brinkmann schrieb am 24.Jul.2001:
"Schmitt, Wolfgang (BKA-IT22)" wrote:
Ein Kollege sucht nach einer ANSI-C Funktion, mit der man aus einem Programm heraus auf einer Konsole nach einem Passwort gefragt wird. Bei der Eingabe soll man die eingegebenen Zeichen nicht sehen.
Für diese Aufgabe fällt mir so spontan nur getpass ein, ...
Wird das nicht über eine Einstellung an der Device geregelt? So nach dem Motto:
stty < /dev/ttyX -echo
Das ist im Prinzip schon richtig, und soweit es das Unterdrücken der Ausgabe angeht tut getpass() intern nichts wesentlich anderes. Dazu kümmert sich getpass() noch um etwas mehr. Aus `man getpass`: The getpass function displays a prompt to the standard error output, and reads in a password from /dev/tty. If this file is not accessible, getpass reads from the stan- dard input. [...] Getpass turns off character echoing and disables the gen- eration of signals by tty special characters (interrupt by control-C, suspend by control-Z, etc.) while reading the password. Auf jeden Fall ist getpass() schön bequem, da man sich nicht um die Details zu kümmern braucht.
mir fällt jetzt nicht der entsprechende Befehl auf C-Ebene zu stty ein. Oder wie wird das noch mal gemacht?
Das läuft intern letztendlich über den Systemaufruf ioctl(), aber man benutzt wohl besser die in `man termios` genannten Funktionen. Für den speziellen Fall "Paßwort einlesen" ist aber wie gesagt getpass() das Sinnvollste. Und um auf das ursprüngliche Problem zurückzukommen: Ich bezweifle, daß die termios-Funktionen bei der Windows-Kompatibilität behilflich sind. Eilert -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Eilert Brinkmann -- Universitaet Bremen -- FB 3, Informatik eilert@informatik.uni-bremen.de - eilert@tzi.org http://www.informatik.uni-bremen.de/~eilert/