Go プログラム内から ulimit -n を設定するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-03 20:38:02
オリジナル
455 人が閲覧しました

How to Set ulimit -n from Within a Go Program?

set ulimit -n

この記事では、golang プログラム内から ulimit -n を設定する方法について説明します。

setrlimit(2)

setrlimit システムコールを使用すると、プロセスはリソース制限を設定および取得できます。引数 how は制御するリソースを指定し、引数 old_limit と new_limit はそのアイテムに対して実行されるアクションを指定します。

この目的のために、Rlimit 構造体を使用して old_limit と new_limit の両方の型を指定する必要があります。 。この構造体には、すべてのリソースのソフト制限とハード制限が含まれています。

問題

指定されたコード スニペットでは、値の設定中に引数が無効であるというエラーが発生しました。 。これは、カーネルが特権のないプロセスによるハード リミットの設定を許可していないためです。プロセスのソフトリミットを設定するには、Rlimit の最大値を変更する必要があります。

<code class="go">import "syscall"

func main() {
    var rLimit syscall.Rlimit
    // get soft limit
    if err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit); err != nil {
        panic(err)
    }
    rLimit.Cur = 999999 // soft limit
    // set soft limit
    if err := syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLimit); err != nil {
        panic(err)
    }
}</code>
ログイン後にコピー

出力

$ ./rlimit
{1024 4096}
Rlimit Final {999999 4096}
$ 
ログイン後にコピー

以上がGo プログラム内から ulimit -n を設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!