Maison > Article > développement back-end > 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 ?
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
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é.
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 { /*[...]*/ }
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!