execle() und popen()
-
Hi Leute
Ich habe folgendes Problem:
Ich habe ein programm (p2) welches aus einem anderen programm (p1) zusammen mit
Umgebungsvariablen gestartet werden soll. Dazu verwende ich execle().
Nun soll das ursprüngliche program (p1) mit (p2) komunizieren.Die einzige funktionsweise von p2 (normal aufgerufen) sieht man hier:
$./p2
Bitte geben Sie Ihren namen ein: testHallo test
$Wie man sieht fragt p2 zur laufzeit nach dem namen und gibt
diesen einfach nur aus und beendet sich.
Daher meine Frage: Wie löse ich das Problem aus p1 heraus.
Daher die namenseingabe soll p1 übernehmen.
p2 soll mit execle() gestartet werden, bzw mit etwas ähnlichem.Für einen kleinen Beispielcode von p1 wäre ich Euch sehr dankbar.
Gruss
-
-
THX
Ist mir bekannt, hilft mir jedoch nicht weiter
Der code von p2 soll ja nicht verändert werden. Daher ist ne operation
wieread(pipeh[0], buffer, BUFFERSIZE);
nicht moeglich
p2 erwartet die eingabe einfach von stdin.Hier ein Beispiel für p2:
/* p2.c */ #include <stdio.h> #include <stdlib.h> int main(void) { char name[100]; printf("\nBitte geben Sie Ihren namen ein: "); scanf("%100s", &name); printf("\nHallo %s\n", name); return(0); }
Und das wars auch schon. Der code soll so copiliert werden.
p1 soll diesen nun starten ( mittels execle() ) und auf die Frage
von p1 mit "testname" antworten.Finde kein Tut welches das beschreibt
Für einen kleinen beispielcode wäre ich da sehr dankbar
PS: wie ich grad sehe hat hier jemand ein ähnliches Problemhttp://www.c-plusplus.net/forum/viewtopic-var-t-is-103639.html
-
Unter umständen würde mir popen() weiterhelfen, doch ich will dass
p2 mit eigen gesetzten Umgebungsvariablen gestartet wird.
-
Erstell doch einfach mit man: pipe(2) eine pipe und biege die auf stdin um für den neuen Prozess.
-
thx
Hey das ist ne Idee!
Werd mal gleich mal ausprobierenGruss