「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Go プログラムから `ulimit -n` を設定するにはどうすればよいですか?

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

2024 年 12 月 31 日公開
ブラウズ:461

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

Golang プログラムから ulimit -n を設定する方法

Go の syscall.Setrlimit 関数を使用すると、Go プログラム内から ulimit -n を設定できます。これにより、グローバルな変更を加えずにプログラム内でリソース制限をカスタマイズできます。

setrlimit について

setrlimit システム コールは、現在のプロセスのリソース制限を設定します。これは、リソース制限タイプ (RLIMIT_NOFILE) と syscall.Rlimit 構造体へのポインターの 2 つの引数を取ります。

ソリューションの実装

これは、ulimit -n の設定方法を示す Go プログラムです。

package main

import (
    "fmt"
    "syscall"
)

func main() {
    var rLimit syscall.Rlimit
    err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit)
    if err != nil {
        fmt.Println("Error Getting Rlimit ", err)
    }
    fmt.Println(rLimit)

    rLimit.Max = 999999
    rLimit.Cur = 999999

    err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLimit)
    if err != nil {
        // Handle the error
    }
}

考慮事項と権限

ハード制限を設定するには、昇格された権限 (CAP_SYS_RESOURCE) が必要であることに注意してください。そうしないと、プログラムで「操作が許可されていません」エラーが発生します。非特権プロセスは、ハード制限で定義された範囲内でのみソフト制限を設定できます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3