ホームページ  >  記事  >  バックエンド開発  >  Linux 32 ビット ディストリビューション上の Go プログラムから `ulimit -n` を設定すると、「無効な引数」エラーが発生するのはなぜですか?

Linux 32 ビット ディストリビューション上の Go プログラムから `ulimit -n` を設定すると、「無効な引数」エラーが発生するのはなぜですか?

DDD
DDDオリジナル
2024-11-03 06:51:02810ブラウズ

Why does setting `ulimit -n` from a Go program on Linux 32-bit distributions result in an

Go プログラムから ulimit -n を設定するには?

問題

ユーザーが Go プログラム内から ulimit -n を設定しようとしました。 setrlimit および getrlimit システム コールを使用して、グローバルではなくプログラム内で制限します。ただし、値を設定しようとすると、「無効な引数」というエラーが発生しました。

解決策

この問題は、Linux 32 の Getrlimit および Setrlimit の Go のバグが原因であることが判明しました。ビット分布。これらのバグは修正されており、問題を解決するには次の手順を実行できます:

  1. Go のデフォルト ブランチ ヒントを更新します。 これにはバグ修正が含まれます。
  2. 更新された Go バージョンを使用してプログラムを再ビルドします。

結果

Go のデフォルト ブランチ チップに更新してプログラムを再ビルドすると、予期した動作が観察されます:

$ ./rlimit
{1024 4096}
Error Setting Rlimit  operation not permitted
Rlimit Final {1024 4096}
$ sudo ./rlimit
[sudo] password for peterSO: 
{1024 4096}
Rlimit Final {999999 999999}

注: Linux/amd64 ディストリビューションの場合、この問題は発生しませんでした。この問題は Linux 32 ビット ディストリビューションに特有のものでした。

以上がLinux 32 ビット ディストリビューション上の Go プログラムから `ulimit -n` を設定すると、「無効な引数」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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