Frage

Wenn ich eine Buchse annehmen () verwenden und eine Datei aus ihm heraus mit fdopen (), was muss ich alles tun, um aufzuräumen? Muß ich fclose () auf der FILE, shutdown () und close () auf dem Sockel oder nur die shutdown () und oder close () oder fclose () tun? Wenn ich das tue fclose nicht (), kann ich frei haben () die Datei Zeiger manuell?

War es hilfreich?

Lösung

Von Mann fdopen:

  

Der Dateideskriptor nicht dup'ed, und wird geschlossen, wenn der Strom durch fdopen () erstellt wird geschlossen

So würde ich nur fclose () verwenden, die auch den zugrunde liegenden Dateideskriptors schließt. Ich weiß nicht, ob shutdown () benötigt wird, auch nicht.

Andere Tipps

http://opengroup.org/onlinepubs/007908775/xsh/fclose. html

  

Die fclose () Funktion wird ein durchführen   close () auf dem Dateideskriptor ist, die   assoziiert zeigte mit dem Strom   von Strom.

Wenn Sie Ihre Steckdose in einem Strom eingewickelt haben es wahrscheinlich nicht mehr sinnvoll zu shutdown (), zumindest nicht, ohne den Strom ersten Spülung. Aber ich will nicht schwören, weil ich nicht weiß, dass es keine Anwendungen, bei denen Sie zum Herunterfahren wollen würden () und nicht nur in der Nähe ().

Sie haben 2 Dinge hier müssen Sie aufzuräumen: die von FILE und dem Dateideskriptor durch die Fassung, dargestellt Strom. Sie müssen den Strom zuerst, dann den Dateideskriptor schließen. Also, in der Regel müssen Sie fclose() Objekte FILE, close() dann alle Datei-Deskriptoren.

Persönlich habe ich nie shutdown() verwendet, wenn ich mich selbst zu bereinigen möchten, so kann ich nicht sagen.

Bearbeiten

Andere haben zu Recht darauf hingewiesen, dass fdclose() auch den zugrunde liegenden Dateideskriptor schließen, und da close() auf einem engen Dateideskriptors Aufruf wird zu einem Fehler führen, in diesem Fall, dass Sie nur fdclose() benötigen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top