Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
piper sbuf free-en
Hi,
in der sbuf ist zwar ein create und so weiter implementiert, aber wie schaut es mit einem destroy/free aus? ich weiss ja nicht, wie der sbuf seine daten managed. kann man einfach ein free auf den handler ausführen, oder soll das einfach bis zum ende leben und durch das bs zusammengesammelt werden?
ich sehe hier einen memory leak…
mfg schrolli
Nein, man darf den [m]SBUF*[/m] nicht freigeben, da nicht spezifiziert ist, dass der Speicher dafuer mit malloc allokiert wurde.
Diesen Leak hat die Musterloesung auch.
ok, danke!
Also soll man einfach durch den sbuf iterieren und all seine Semaphore destroyen oder einfach ganz dem Betriebssystem überlassen?
Und ich hätte noch eine andere Frage:
Wenn direkt nach dem Starten des Pipers EOF (also Strg+D) kommt, bevor die Pipe geöffnet wurde, ist es dann ok, mit dem Beenden des Pipers zu warten, bis die Pipe geöffnet wurde?
Man kann die Semaphoren einzeln freigeben, wenn man sie dannach nicht mehr verwendet. Das muss man aber nicht, und die synchronisation davon ist relativ schwierig.
Nein. i[/i] Warum sollte man warten, um dann gar nichts zu tun, außer das Programm zu beenden? Und für das andere Programm wäre diese Situation auch total sinnlos: Man muss eine Pipe öffnen, die dann aber sofort wieder geschlossen wird.