Autor |
Beitrag |
gonzo_16
Beiträge: 21
|
Verfasst: Fr 14.01.05 10:29
Hallo...
Ich Kann ja mit Libc.System('blabla') tolle Sachen starten. Aber: Wie kann ich kontinuierlich die Ausgabe des Programmes abfragen?
Moderiert von AXMD: Tippfehler im Titel korrigiert.
|
|
patrick
Beiträge: 1481
WIN2k, WIN XP
D6 Personal, D2005 PE
|
Verfasst: Fr 14.01.05 10:33
was verstehst du unter "ausgabe"
datei, meldungen....
_________________ Patrick
im zweifelsfall immer das richtige tun!!!
|
|
gonzo_16
Beiträge: 21
|
Verfasst: Fr 14.01.05 20:43
Mit Ausgabe, meine ich z.B. wenn ich seti@home starte, dsa ich die Ausgabe des Clients in einem Memofeld darstellen kann. Oder bei ls, das ich alle dateinen die es listet in einem memofeld sehe. Oder eine Manpage in einem Memofels sehe...
WEnn es dir weiterhilft...das was man unter C mit einer pipe realisieren kann.
thx GonZo
|
|
tommie-lie
Beiträge: 4373
Ubuntu 7.10 "Gutsy Gibbon"
|
Verfasst: Fr 14.01.05 21:08
gonzo_16 hat folgendes geschrieben: | das was man unter C mit einer pipe realisieren kann. |
Das müsste man in Pascal auch mit einer Pipe realisieren können. Frag' mich nicht wie's unter Linux geht, aber du scheinst es ja zu wissen
Ansonsten weiß ich, daß man (zumindest über die Kommandozeile, mit System() habe ich es noch nicht ausprobiert) die Ausgabe des Programmes in eine Datei umleiten kann. Die könntest du in deinem Programm alle x Sekunden neu auslesen. Das wäre allerdings die unschöne Lösung, die zudem noch eine anschließende Löschung der temporären Datei erfordert, die Lösung mit einer Pipe ist also schon die bessere.
_________________ Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
|
|
gonzo_16
Beiträge: 21
|
Verfasst: Sa 15.01.05 03:57
Ja nur habe ich mit der pipe (bei C) das Problem, das wenn ich ein Prgramm wie SETI starte, die Pipe übereinen seperaten Thread auslesen müsste, da sie für lange zeit nicht leer wird. Nur ist threadprogrammierung sehr kompliziert...das mit der DAtei wäre ne idee...zwar unschön aber effizient
|
|
tommie-lie
Beiträge: 4373
Ubuntu 7.10 "Gutsy Gibbon"
|
Verfasst: Sa 15.01.05 11:19
gonzo_16 hat folgendes geschrieben: | Nur ist threadprogrammierung sehr kompliziert... |
TThread gibt's AFAIR auch von der Kylix-RTL.
Ansonsten weiß ich nur, daß Thread-Programmierung unter Windows ohne die VCL noch das einfachste ist, was ich je mit der API gemacht habe, ich weiß aber natürlich nicht, wie es unter Linux damit aussieht, kann mir aber nicht vorstellen, daß es großartig anders sein kann.
_________________ Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
|
|
gonzo_16
Beiträge: 21
|
Verfasst: So 16.01.05 20:04
jo..bei kylix habe iuch keine ahnng wie das geht...bei C isses jedenfalls nicht so einfach...
|
|
opfer.der.genauigkeit
Beiträge: 754
Erhaltene Danke: 1
|
Verfasst: Do 20.01.05 11:44
Also mir ist nur teilweise klar, was du machen möchtest.
Bzw. für die Formulierung gibt es unter Linux sicherlich tausend Lösungen.
Der Client, von dem du die Nachrichten lesen willst schickt die Nachrichten wohin?
Von wo willst du sie lesen? Vom Standart - Output? Denn | bzw. >> in C macht nix anderes als in den std- output schreiben, solange der Prameter nicht geändert wurde.
D.h. dein Client, wenn er Nachrichten schickt, muß ein Ausgabeziel haben.
Entweder eine Datei oder eine Console wte.
In beiden Fällen kannst du die Ausgabe wie eine Datei einlesen.
Nen Thread müßtest du auch nicht schreiben, wenn du da nicht so die Erfahrung hast. N Timer reicht doch .. oder etwa nicht
_________________ Stellen Sie sich bitte Zirkusmusik vor.
|
|
gonzo_16
Beiträge: 21
|
Verfasst: Mo 07.02.05 18:06
um es dir einfacher zu mache und lange umschreibunge zu sparen (bin noch neu be Kylix, und kann meine Probleme schlecht beschreiben)
Ich möchte diesen C-Code in Kylix umsetzen:
Jetzt mal ganz einfach dargestellt:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| #include <stdio.h>
int main() { char buffer[2048]; FILE* pipe = popen("/bin/sh -c ls", "r"); while (!feof(pipe)) { fgets(bufer, 2048, pipe); printf("%s", buffer); } } |
Zuletzt bearbeitet von gonzo_16 am Di 08.02.05 13:56, insgesamt 1-mal bearbeitet
|
|
retnyg
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Mo 07.02.05 18:23
|
|
opfer.der.genauigkeit
Beiträge: 754
Erhaltene Danke: 1
|
Verfasst: Di 08.02.05 22:35
Weiß nicht ob dir das weiterhilft, wenn ja, bitte um Rückmeldung, dann merk ich mir den Link.
Hab mal rumgeschnüffelt.
mailman.fastxs.net/p...002-July/000811.html
Scheint sich dabei um ne Drittkomponente zu handeln.
_________________ Stellen Sie sich bitte Zirkusmusik vor.
|
|
gonzo_16
Beiträge: 21
|
Verfasst: Do 10.02.05 01:38
genau das habe ich gebraucht...nun weiss ich wie das mit der Pipe funktioniert...
Nur Leider hat das mit den Uses die er benutzt hat in meinem Kylix nicht hin...er SAgt er wisse nicht was TPipe ist...hm
schon mal Vielen Dank
|
|
gonzo_16
Beiträge: 21
|
Verfasst: Do 10.02.05 02:15
|
|