Martin Vieregg hat geschrieben: So 9. Aug 2020, 09:45
Du brauchst nur Pipes, wenn Du gleichzeitig den Output erzeugen und gleich weiterverarbeiten willst.
Genau das ist die Absicht. Auf temporäre Datei schreiben und wieder einlesen ginge mir bei zufällig umfangreicherem stdOut-put zu langsam.
Dank Lars' Code-Beispiel - nochmals DANKE! - habe ich sogar schon einen Prototyp hingekriegt, verpackt in C++-OO-Module (4 eigene Klassen

). Nach recht tiefer Lernkurve im Probetrainig...
Der ist zwar nicht so universell wie ich anfangs erträumte, wird sich jedoch für meine nächsten Schritte verwenden lassen, und besser als erhofft (suspekt - wo sind die Fallen...

) Für die Hitze heute bin ich mit 'nem (unaufgeräumten) Test-Resultat zufrieden, betraf "htext201.zip" (eines meiner Lieblings-Tools...):
Code: Alles auswählen
[G:\lscpp\lview]lmain
-->CreatePipe READ=3 WRITE=5
-->CreatePipe READ=6 WRITE=7
00>CreateView Beginn ------
-->1hier Stdout
-->1hier Stderr
w1>Close WRITE handle=0
w2>Close WRITE handle=0
-->2hier Stdout
Read-Handle=3
Read-RC--vor=0
Read-RC-nach=0
+1>Zeilen in Queue =39
r1>Close READ handle=0
A1>Zeilen in Queue: 39
A2>Zeilen in Queue: 0
A2>Zeilen in Bag : 35
B1>Zeilen in Set0 : 7
B2>Zeilen in Set1 : 28
C> CreateView fertig ------
Create View - test results:
-: --Length -EAs ------Date -Time Name
1: 372 0 20.12.2015 16:47 file_id.diz
2: 13596 0 29.11.2014 15:28 htcmp.cmd
3: 128757 0 20.12.2015 16:34 htext.cmd
4: 116930 0 20.12.2015 16:51 htext.inf
5: 19625 0 27.07.2008 22:00 htlaunch.exe
6: 72337 0 29.11.2014 15:26 ipf2htext.cmd
7: 246 0 27.07.2008 22:00 readme.cmd
8: 0 0 29.11.2014 15:13 bmp/
9: 218 0 27.07.2008 22:00 bmp/book.bmp
10: 1326 0 27.07.2008 22:00 bmp/ns.bmp
11: 1326 0 27.07.2008 22:00 bmp/nsmail.bmp
12: 0 0 20.12.2015 16:52 ipf/
13: 59067 0 27.07.2008 22:00 ipf/commands.inc
14: 0 0 20.12.2015 14:08 ipf/common/
15: 379 0 27.07.2008 22:00 ipf/common/history.eng
16: 349 0 27.07.2008 22:00 ipf/common/trademarks.eng
17: 98 0 27.07.2008 22:00 ipf/common/vars.eng
18: 1791 0 20.12.2015 14:50 ipf/copyright.eng
19: 1130 0 27.07.2008 22:00 ipf/example.bmp
20: 6303 0 27.07.2008 22:00 ipf/footnote.inc
21: 4929 0 27.07.2008 22:00 ipf/hints.inc
22: 8790 0 20.12.2015 16:42 ipf/history.inc
23: 592 0 20.12.2015 14:08 ipf/htext.txt
24: 3348 0 27.07.2008 22:00 ipf/installation.inc
25: 3415 0 30.08.2008 00:23 ipf/limitations.inc
26: 16263 0 20.12.2015 16:26 ipf/links.inc
27: 201 0 27.07.2008 22:00 ipf/lol.inc
28: 1817 0 27.07.2008 22:00 ipf/overview.inc
29: 544 0 27.07.2008 22:00 ipf/prerequisites.inc
30: 8969 0 27.07.2008 22:00 ipf/samples.inc
31: 3051 0 27.07.2008 22:00 ipf/sublink.inc
32: 249 0 20.12.2015 14:50 ipf/title.inc
33: 208 0 29.11.2014 15:20 ipf/urls.inc
34: 13292 0 27.07.2008 22:00 ipf/usage.inc
35: 27 0 27.07.2008 22:00 ipf/vars.inc
+: 489545 0 35 files
[G:\lscpp\lview]
Im Fall von Pipes muss man beides bearbeiten. MeShell arbeitet mit named pipes. Sowohl für den Empfang von stdout als auch von stderr gibt es einen eigenen Thread.
Ich benötige nur die Weiterleitung von stdout lokal nach "oben".
Stderr verschwindet in meinem Prototyp im Nirvana: ich denke ich brauch's eh' nicht, und meine Tests mit zweiter Pipe endeten in Hängern bzw. beim Debuggen mit "The system detected an external processing error at..." --> Kaltstart

Nostalgie... Reicht mir erstmal.