Maison > développement back-end > Golang > le corps du texte

Pourquoi la fonction « os.OpenFile » génère-t-elle une erreur « descripteur de fichier incorrect » lors de l'ajout à un fichier journal dans Go ?

Patricia Arquette
Libérer: 2024-11-11 03:53:03
original
762 Les gens l'ont consulté

Why is the `os.OpenFile` function throwing a

Descripteur de fichier incorrect dans Golang lors de l'ajout à un fichier de journalisation

Lors de la tentative d'ajout à un fichier de journalisation dans une routine Go, les utilisateurs peuvent rencontrer l'erreur suivante :

write ./log.log: bad file descriptor
Copier après la connexion

Même si le fichier cible existe et dispose des autorisations appropriées, le problème persiste. Les premières tentatives pour résoudre le problème à l'aide d'un mutex ont échoué.

Solution

La résolution réside dans l'ajout de l'indicateur O_WRONLY à l'appel os.OpenFile :

if f, err := os.OpenFile("./log.log", os.O_APPEND|os.O_WRONLY, os.ModeAppend); err != nil { /*[...]*/ }
Copier après la connexion

Explication

Selon la documentation Linux sur open, l'un des modes d'accès suivants doit être inclus dans l'argument flags : O_RDONLY, O_WRONLY ou O_RDWR. Ceux-ci demandent l'ouverture du fichier en mode lecture seule, écriture seule ou lecture/écriture, respectivement.

Par défaut, l'appel os.OpenFile de Go ouvre le fichier en mode lecture seule. A ce titre, il est nécessaire de spécifier explicitement O_WRONLY pour autoriser l'écriture dans le fichier de journalisation.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal