Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Inhalt einer NamedPipe löschen (https://www.delphipraxis.net/55822-inhalt-einer-namedpipe-loeschen.html)

chaosben 27. Okt 2005 13:13


Inhalt einer NamedPipe löschen
 
Hi ho!

Heute habe ich mal eine schöne Frage aus den Tiefen der Konsole (also etwa aus der Richtung ;) )
Ich habe eine NamedPipe und auch einen Client, der sie per TFileStream beschreibt. Auf der anderen Seite lese ich mit ReadFile den ganzen "Datenmüll" ;) wieder raus. Aber leider ist danach immer noch alles (der ganze Text) in der Pipe drin.
Und der Client kann nicht nochmal auf die Pipe zugreifen, obwohl er der einzige ist, der auf sie zugreift. Die Fehlermeldung meint, das die maximale Anzahl von Clients für diese Pipe erreicht ist. (Beim Erstellen der Pipe, habe ich aber 10 mögliche Clients definiert.)
Bis jetzt habe ich das Problem so gelöst, das ich nach jedem Auslesen die Pipe schliessen und gleich wieder neu öffnen. Aber das ist ja mehr als dürftig.
Habt ihr irgendeinen Vorschlag? Danke schon mal im Voraus.

marabu 28. Okt 2005 08:04

Re: Inhalt einer NamedPipe löschen
 
Hallo Benjamin.

Zitat:

Zitat von chaosben
Aber leider ist danach immer noch alles (der ganze Text) in der Pipe drin.

Was meinst du damit? ReadFile setzt doch den access pointer weiter und wenn der vom kernel zugeordnete memory chunk ausgereizt ist, dann wird er vom kernel auch freigegeben. Inhalte sind im Hauptspeicher also nur eine begrenzte Zeit lang vorhanden.

Zitat:

Zitat von chaosben
Und der Client kann nicht nochmal auf die Pipe zugreifen, obwohl er der einzige ist, der auf sie zugreift.

Das hat wohl einen anderen Grund.

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz