Maison  >  Article  >  développement back-end  >  Comment corriger l'erreur « Mauvais descripteur de fichier » lors de l'ajout au fichier de journalisation dans Golang ?

Comment corriger l'erreur « Mauvais descripteur de fichier » lors de l'ajout au fichier de journalisation dans Golang ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-11 02:02:02338parcourir

How to Fix

Golang : résolution de l'erreur « Descripteur de fichier incorrect » lors de l'ajout au fichier de journalisation

Lors de la tentative d'ajout à un fichier de journalisation dans une routine Go , certains développeurs rencontrent une erreur « mauvais descripteur de fichier ». Même si le fichier existe et dispose des autorisations appropriées, le problème persiste.

Analyse et solution

Une enquête plus approfondie révèle que l'erreur est due à l'absence de l'indicateur O_WRONLY. dans l'appel de fonction OpenFile. Par défaut, le descripteur de fichier obtenu est en lecture seule.

Pour remédier à ce problème, ajoutez l'indicateur O_WRONLY à l'appel de la fonction os.OpenFile. Voici le code corrigé :

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

Comme documenté dans la page de manuel de la fonction ouverte Linux, l'un des modes d'accès suivants doit être spécifié : O_RDONLY, O_WRONLY ou O_RDWR. Ces indicateurs indiquent respectivement un accès en lecture seule, en écriture seule ou en lecture/écriture. Dans ce cas, l'utilisation de O_APPEND seul entraîne un descripteur de fichier en lecture seule, conduisant à l'erreur. L'ajout de l'indicateur O_WRONLY garantit un descripteur de fichier en écriture seule.

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!

Déclaration:
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