Heim > Backend-Entwicklung > Golang > Wie behebt man den Fehler „Bad File Descriptor' beim Anhängen an die Protokollierungsdatei in Golang?

Wie behebt man den Fehler „Bad File Descriptor' beim Anhängen an die Protokollierungsdatei in Golang?

Barbara Streisand
Freigeben: 2024-11-11 02:02:02
Original
371 Leute haben es durchsucht

How to Fix

Golang: Behebung des Fehlers „Bad File Descriptor“ beim Anhängen an eine Protokolldatei

Beim Versuch, innerhalb einer Go-Routine an eine Protokolldatei anzuhängen Bei einigen Entwicklern tritt der Fehler „Ungültiger Dateideskriptor“ auf. Obwohl sichergestellt wurde, dass die Datei vorhanden ist und über die entsprechenden Berechtigungen verfügt, besteht das Problem weiterhin.

Analyse und Lösung

Weitere Untersuchungen ergeben, dass der Fehler auf das Fehlen der O_WRONLY-Flagge zurückzuführen ist im OpenFile-Funktionsaufruf. Standardmäßig ist der erhaltene Dateideskriptor schreibgeschützt.

Um dieses Problem zu beheben, fügen Sie dem Funktionsaufruf os.OpenFile das Flag O_WRONLY hinzu. Hier ist der korrigierte Code:

if f, err := os.OpenFile("./log.log", os.O_APPEND|os.O_WRONLY, os.ModeAppend); err != nil {
    /*[...]*/
}
Nach dem Login kopieren

Wie in der Manpage der Linux-Open-Funktion dokumentiert, muss einer der folgenden Zugriffsmodi angegeben werden: O_RDONLY, O_WRONLY oder O_RDWR. Diese Flags zeigen schreibgeschützten, schreibgeschützten bzw. Lese-/Schreibzugriff an. In diesem Fall führt die alleinige Verwendung von O_APPEND zu einem schreibgeschützten Dateideskriptor, was zu dem Fehler führt. Durch das Hinzufügen des O_WRONLY-Flags wird ein schreibgeschützter Dateideskriptor sichergestellt.

Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „Bad File Descriptor' beim Anhängen an die Protokollierungsdatei in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage