Seite 1 von 1

Gleichzeitig lesen und schreiben?

Verfasst: 11. April 2021 17:57
von amifrog
Ich hab mal eine wahrscheinlich doofe Frage und bin glücklich, sobald mich jemand wohin verlinkt mit der offensichtlichen Antwort auf dieses kleine Problem, das so aussieht:
Ich kann ja ein externes Programm ausführen mittels execute(), dem ich ein Filehandle mitgebe, wohin es Ausgaben tätigt.
Jetzt dachte ich, wenn ich dieses Ausgabefile als Mode_readwrite öffne, dann kann ich gleichzeitig die Ausgaben einlesen, aber das funktioniert nicht, weil ich auf das Ende von execute() warten muß.
Also wenn execute() durch ist, dann ist das File noch offen und ich kann auf 0 seek()en und einlesen, aber das ist mir eigentlich zu spät, weil ich eventuell mehrere Sekunden warten muß und auch keine Kontrolle über die resultierende Dateigröße habe.
Wie kann ich die Ausgabe ab dem Beginn von execute() mitlesen? :thinking:

Re: Gleichzeitig lesen und schreiben?

Verfasst: 12. April 2021 09:26
von Cyborg
1) SystemTagList() benutzen und nicht Execute()
2) Asynchron laufen lassen
3) Dem aufgerufenen Programm einen selbst erstellten Output() Handle mitgeben, von dem Du dann liest.

Siehe auch: https://wiki.amigaos.net/wiki/Executing ... l_Programs

Re: Gleichzeitig lesen und schreiben?

Verfasst: 12. April 2021 10:11
von amifrog
Cool, danke. Und das funktioniert auch schon in OS3, was es nicht alles gibt. :)

Re: Gleichzeitig lesen und schreiben?

Verfasst: 9. Mai 2021 12:53
von amifrog
So, ich habe das heute endlich mal getestet - und das funkioniert sogar! :rofl:

Jetzt fragt ihr euch bestimmt, was will der Depp damit?

Wir hatten ja mal das Thema bzgl. Fensterrahmen/minimieren/andocken usw..
Nun, stellen wir uns mal vor, wir wollen eine Console in unsere z.B. IDE integrieren, dann kann man die wohl einfach ans Fenster dranhängen, aber:
man hat keine Interaktivität (vom Programmfluß her).
Wenn ich also die Console-Ausgabe zwischendurch abgreifen kann, habe ich auch die Möglichkeit, auf die Ausgaben zu reagieren.
asnyciotest_mui.png
Das Beispiel tut ein

Code: Alles auswählen

C:List FONTS: ALL
Hier habe ich beim Auftreten von "Directory " einfach den Status von "Stop" auf "Play" gesetzt (nur ein Testbeispiel).
In einer IDE könnte man z.B. den Kompiler stoppen, sobald das 5. Mal ein "Warning:" auftritt.
Und außerdem habe ich den Output in meiner eigenen Liste statt im Consolenfenster, das ist viel flexibler!
Was meint ihr?