ホームページ  >  記事  >  バックエンド開発  >  Go でログ ファイルに追加するときに、「os.OpenFile」関数が「不正なファイル記述子」エラーをスローするのはなぜですか?

Go でログ ファイルに追加するときに、「os.OpenFile」関数が「不正なファイル記述子」エラーをスローするのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-11 03:53:03758ブラウズ

Why is the `os.OpenFile` function throwing a

ログ ファイルへの追加中に Golang で不正なファイル記述子が発生しました

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 { /*[...]*/ }

説明

Open に関する Linux ドキュメントによると、次のアクセス モードのいずれかをフラグに含める必要があります。引数: O_RDONLY、O_WRONLY、または O_RDWR。これらはそれぞれ、読み取り専用、書き込み専用、または読み取り/書き込みモードでファイルを開くことを要求します。

デフォルトでは、Go の os.OpenFile 呼び出しは読み取り専用モードでファイルを開きます。そのため、ログ ファイルへの書き込みを許可するには、O_WRONLY を明示的に指定する必要があります。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。