Gleichzeitig lesen und schreiben?

...für und mit Amiga OS4

Moderator: OS4Welt-Team

Antworten
Benutzeravatar
amifrog
Beiträge: 733
Registriert: 16. Juni 2017 22:58

Gleichzeitig lesen und schreiben?

Beitrag 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:
Benutzeravatar
Cyborg
AmigaOS Entwickler
Beiträge: 3460
Registriert: 28. September 2009 11:10
Hat sich bedankt: 12 Mal
Danksagung erhalten: 20 Mal

Re: Gleichzeitig lesen und schreiben?

Beitrag 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
.. der SysOp hat immer recht :evil:

PGP Schlüssel verfügbar
Benutzeravatar
amifrog
Beiträge: 733
Registriert: 16. Juni 2017 22:58

Re: Gleichzeitig lesen und schreiben?

Beitrag von amifrog »

Cool, danke. Und das funktioniert auch schon in OS3, was es nicht alles gibt. :)
Benutzeravatar
amifrog
Beiträge: 733
Registriert: 16. Juni 2017 22:58

Re: Gleichzeitig lesen und schreiben?

Beitrag 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?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Antworten