Hi, On 16 Aug 2002, Volker Kroll wrote:
Ich habe es jetzt so gemacht. Nach meinem Verstaendnis muesste das korrekt sein. Leider scheint das Schreiben nicht zu funktionieren.
int cachePW() { FILE * commandin; char c[124]; char * command = c; sprintf(c, "prog -username %se >out 2>&1",uid); commandin = popen(command, "w"); fputs(pw, commandin); fputs(pw, commandin);
return 0; }
Keine Ahnung was ich falsch machen. Spannenderweise kommt die Aufforderung "Password: " auch immer noch auf dem Terminal an und nicht in der Datei out.
Das bedeutet dann mit grosser Wahrscheinlichkeit, dass das Programm direkt /dev/tty abfragt, und nicht stdin (z.B. um echoing auszuschalten). Die getpass() Funktion macht das z.B. von Haus aus. Wenn du sowas machen willst (also direkt ans Terminal schreiben), musst du selber ein pseudo-tty erstellen und mit stdin verbinden. expect(1) tut sowas (schau dir die Funktion send_tty an), und IIRC gibt es auch perl-Module, die das koennen. Es selber in C zu programmieren ist hoechst untrivial. Ciao, Micha.