AW: avanti-cl: Programmdatei erneuert

Dierk Hoeppner d.hoeppner at tu-bs.de
Di Mai 7 12:11:11 CEST 2002


Hallo Herr Schmid,
 
> 1. Wie kann ich dynamisch den Puffer der Ausgabe-Pipe dimensionieren? Im
> Moment muß ich bei größeren zu erwartenden Datenmengen dem Aufruf von
> CreatePipe einen entsprechend großen Puffer mitgeben. Aber zum Beispiel mit
> dem Windows-Standardwert (4096 Bytes) kommt man nicht weit und stellt man
> mehr ein, wird wohl einiges an Speicher verschwendet.

Ja, es gibt da prinzipiell zwei Möglichkeiten:

1. Legen Sie eine temporäre Datei an, die Sie dann auch noch als Memory-Mapped-Datei 
ansprechen.

2. Basteln Sie sich eine dynamisch allozierte verkettete Liste, an die Sie jeden gelesenen Puffer 
als jeweils ein Element anhängen. Am Schluss wissen Sie, wie groß die Antwort ist, und 
können alles in einer Variablen ablegen.
 
> 2. Den Input bekomme ich noch nicht hin mit der Pipe. Es funktioniert, wenn
> ich StdIn auf eine Datei lenke, die ich mit CreateFile auf eine Jobdatei
> öffne. Aber es müßte doch auch mit einem Handle von CreatePipe gehen, in das
> ich dann mit WriteFile schreibe. Mein Versuch sah bisher so aus:
> 
> a) Job zusammenstellen in einer Char-Variablen (nach dem letzten
> Zeilenumbruch ein Ascii 26 anhängen)
> b) Pipe mit CreatePipe(InpHandle, OutpHandle, SecurityAttributes,
> Puffergröße) erstellen
> c) in das InpHandle den Job schreiben mit WriteFile(InpHandle, Job,
> Joblänge, BytesWritten, nil)
> d) jetzt einen Prozess starten für avanti-cl mit dem InpHandle und
> OutpHandle als Standardinput und -output in der StartupInfo
> 
> Und jetzt bleibt mein Programm hängen. Es sieht so aus, als würde avanti-cl
> auf die Eingabe warten und diese nicht kommen oder zumindest nicht
> vollständig. Weiß hier jemand Rat, wie man in den Standardinput eines
> erzeugten Prozesses schreibt?

Ich kann auch nur raten, weil ich mich mit der Materie auch nicht so gut auskenne. Aber ich 
würde meinen, dass Sie erst den Prozess starten sollten, bevor sie etwas in die Pipe 
reinschreiben.

Viele Grüße

Dierk Hoeppner
Universitaetsbibliothek
Pockelsstr. 13
D-38106 Braunschweig
Germany
Tel: +49-531-391-5066 Fax: -5836
E-Mail: d.hoeppner at tu-bs.de     




Mehr Informationen über die Mailingliste Allegro