Go ログ ファイルに追加すると「不正なファイル記述子」エラーが発生するのはなぜですか?

Barbara Streisand
リリース: 2024-11-12 04:37:02
オリジナル
873 人が閲覧しました

Why Am I Getting a

Golang のファイル記述子の問題: 「不正なファイル記述子」が解決されました

Go ルーチン内でログ ファイルに追加しようとすると、開発者は「不正なファイル記述子」エラーが発生する可能性があります。この問題は、ファイルが存在し、適切な権限を持っている場合に特に厄介になる可能性があります。

最初は、複数のルーチンが同時にファイルを開こうとすると問題が発生するように見えるかもしれません。ただし、これを防ぐためにミューテックスを実装した後でも、同じエラーが発生します。

解決策は、ファイルを開くステートメントに O_WRONLY フラグを追加することです。デフォルトでは、開く操作ではファイルが読み取り専用モードで開きます。書き込み専用フラグを明示的に指定しないと、ファイルに書き込もうとすると「不正なファイル記述子」エラーが発生して失敗します。

次に、O_WRONLY フラグを含むコード スニペットの修正版を示します。

if f, err := os.OpenFile("./log.log", os.O_APPEND|os.O_WRONLY, os.ModeAppend); err != nil {
    panic(err)
}
ログイン後にコピー

この変更により、ファイルは追加権限と書き込み専用権限の両方で開かれるようになり、「不正なファイル記述子」エラーが解決され、ログ ファイルへの正常な書き込みが可能になります。

以上がGo ログ ファイルに追加すると「不正なファイル記述子」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート