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 サイトの他の関連記事を参照してください。