Go の syscall.Setrlimit 関数を使用すると、Go プログラム内から ulimit -n を設定できます。これにより、グローバルな変更を加えずにプログラム内でリソース制限をカスタマイズできます。
setrlimit システム コールは、現在のプロセスのリソース制限を設定します。これは、リソース制限タイプ (RLIMIT_NOFILE) と syscall.Rlimit 構造体へのポインターの 2 つの引数を取ります。
次に、ulimit -n の設定方法を示す Go プログラムを示します。
<code class="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 } }</code>
ハード制限を設定するには、高い権限 (CAP_SYS_RESOURCE) が必要であることに注意してください。そうしないと、プログラムで「操作が許可されていません」エラーが発生します。非特権プロセスは、ハード制限で定義された範囲内でのみソフト制限を設定できます。
以上がGo プログラムから `ulimit -n` を設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。