program starten

Post Reply
Message
Author
SEllmi

program starten

#1 Post by SEllmi »

hi
kann mir jemand sagen wie ein programm aussehen muß das ein anderes program startet
und dann in die eingabe aufforderung einen text schreibt.
z.b.
programm a startet b mit
execl("/usr/bin/b","b",0);

b will nach dem start aber eine eingabe habe die man nicht von vornherein mit einem argument starten kann

z.b

./b
wie ist dein name?#

wie kann ich das in c umsetzen ?

Jochen

Re: program starten

#2 Post by Jochen »

Da wäre einmal popen(3). Damit kannst Du einprogramm starten und erhältst gleichzeitig einen FILE *, der entweder mit stdin des gestarteten Kommandos verbunden ist (um Daten reinzufüttern, wie Du wolltest), oder der mit stdout verknüpft ist, um die Ausgabe des Kommandos zu erhalten.

Wenn Du eine bidirektionale Kommunikation brauchst, wird's haariger. Dann musst Du mittels pipe(2) ein Pipe-Deskriptor-Pärchen zum Lesen und eins zum Schreiben erstellen, dann mittels fork(2) einen Kindprozess erzeugen, der die Schreibe- und die Lese-Pipe mittels dup2(2) zu seinem stdin-/-out macht und dann mittels eines exec-Calls das eigentliche Programm aufruft...

Da würde ich aber vorher einen Blick in ein beliebiges Buch über UNIX-Systemprogrammierung empfehlen.

Jochen

Post Reply