fork/pipe/ncurses: Programm entwerfen

04/06/2008 - 16:30 von Andreas Leppert | Report spam
Hallo,

ich will mir folgendes Programm schreiben: mit der ncurses Bibliothek
sollen n WINDOWs erstellt werden, wobei in jedem dieser WINDOWs der
output eines ant Befehls ausgegeben werden soll.

Da ich bisher nur kleine C Programme geschrieben habe, habe ich habe nun
Probleme beim Design des Programms und es wàre schön, wenn ihr mir dabei
helfen könntet. Hier mein Ansatz:

Im Hauptprogramm wird n mal fork() aufgerufen um n Prozesse (für die n
WINDOWs) zu bekommen. In jedem dieser Kindprozesse wird nun die exec-
Bibliotheksfunktion aufgerufen um den ant Befehl (ant -Dport=... echo)
jeweils zu starten. Wichtig ist hierbei, dass die n ant Befehle dann
parallel laufen. Weiterhin sei noch erwàhnt, dass diese sich nicht von
alleine beenden: man muss sie mit einem Signal beenden (darüber habe ich
mir aber noch gar keine Gedanken gemacht).

Die Sache ist jetzt die: wie komme ich an den Output der ant Befehle? Die
Ausgabe soll ja nicht auf stdout erscheinen, ich hàtte die Ausgabe lieber
als char* o.à. damit ich die Ausgabe noch filtern und schließlich dann
mittels ncurses Befehle in den WINDOWs ausgeben kann. Sind Pipes / dup2
die Lösung dafür?

Andererseits sind doch pipes für die Kommunikation *zwischen* Prozessen
da, ich möchte das aber gar nicht - bei mir sollen ja nicht der Eltern-
Prozess und die Kindern miteinander kommunizieren können! Ich dachte eher
daran, dass die Kinder jeweils die Ausgabe in den ncurses WINDOWs
produzieren und sobald sie fertig sind, sich beenden.

Was meint ihr zu dem Ansatz? Geht man da im Allgemeinen anders vor?

Ich hàtte gerne ein grobes Design bevor ich mich an den Code wage,
deswegen kann ich euch keinen Code liefern.

Danke im voraus,
AL
 

Lesen sie die antworten

#1 Thomas Rachel
05/06/2008 - 09:55 | Warnen spam
Andreas Leppert schrieb:

Die Sache ist jetzt die: wie komme ich an den Output der ant Befehle? Die
Ausgabe soll ja nicht auf stdout erscheinen, ich hàtte die Ausgabe lieber
als char* o.à. damit ich die Ausgabe noch filtern und schließlich dann
mittels ncurses Befehle in den WINDOWs ausgeben kann. Sind Pipes / dup2
die Lösung dafür?



Ganz genau. Du erstellst vor dem fork() eine pipe(), nach dem fork()
schließt Du im Parent den write-Part (filedes[1]), im Child den
read-Part (filedes[0]).

Andererseits sind doch pipes für die Kommunikation *zwischen* Prozessen
da, ich möchte das aber gar nicht - bei mir sollen ja nicht der Eltern-
Prozess und die Kindern miteinander kommunizieren können!



Ist das keine Kommunikation zwischen Prozessen?

Ich dachte eher daran, dass die Kinder jeweils die Ausgabe in den
ncurses WINDOWs produzieren und sobald sie fertig sind, sich beenden.



paßt doch?!


Thomas

Ähnliche fragen