Golang: ログ ファイルに追加する際の「不正なファイル記述子」エラーを解決する
Go ルーチン内でログ ファイルに追加しようとしたとき、一部の開発者は「不正なファイル記述子」エラーに遭遇します。ファイルが存在し、適切な権限があることを確認しても、問題は解決しません。
分析と解決策
さらなる調査により、O_WRONLY フラグがないためにエラーが発生していることが判明しました。 OpenFile 関数呼び出し内。デフォルトでは、取得されるファイル記述子は読み取り専用です。
この問題を修正するには、os.OpenFile 関数呼び出しに O_WRONLY フラグを追加します。修正されたコードは次のとおりです。
if f, err := os.OpenFile("./log.log", os.O_APPEND|os.O_WRONLY, os.ModeAppend); err != nil { /*[...]*/ }
Linux オープン関数のマニュアル ページに記載されているように、アクセス モード O_RDONLY、O_WRONLY、または O_RDWR のいずれかを指定する必要があります。これらのフラグは、それぞれ読み取り専用、書き込み専用、または読み取り/書き込みアクセスを示します。この場合、O_APPEND を単独で使用すると読み取り専用のファイル記述子になり、エラーが発生します。 O_WRONLY フラグを追加すると、書き込み専用のファイル記述子が保証されます。
以上がGolang でログ ファイルに追加するときに発生する「不正なファイル記述子」エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。