当尝试附加到 Go 例程中的日志文件时,用户可能会遇到以下错误:
write ./log.log: bad file descriptor
尽管确保目标文件存在并具有适当的权限,但问题仍然存在。最初尝试使用互斥体解决该问题失败。
解决方案在于将 O_WRONLY 标志添加到 os.OpenFile 调用中:
if f, err := os.OpenFile("./log.log", os.O_APPEND|os.O_WRONLY, os.ModeAppend); err != nil { /*[...]*/ }
根据 Linux 的 open 文档,flags 参数中必须包含以下访问模式之一: O_RDONLY、O_WRONLY 或 O_RDWR。这些请求分别以只读、只写或读/写模式打开文件。
默认情况下,Go 的 os.OpenFile 调用以只读模式打开文件。因此,有必要显式指定 O_WRONLY 以允许写入日志文件。
以上是为什么 `os.OpenFile` 函数在附加到 Go 中的日志文件时会抛出'错误文件描述符”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!