Home >Backend Development >Golang >How to Set ulimit -n from Within a Go Program?
set ulimit -n
In this article, we will discuss how to set ulimit -n from within a golang program.
setrlimit(2)
The setrlimit system call allows a process to set and retrieve resource limits. The argument how specifies the resource to be controlled and the argument old_limit and new_limit specifies an action to be taken on that item.
For our purpose, we need to specify the types for both old_limit and new_limit using the Rlimit struct. This struct contains the soft and hard limits of all resources.
The Problem
In the given code snippet, you were getting an error saying invalid argument while setting the value. This is because the kernel does not allow unprivileged processes to set the hard limit. You need to change the Max value of Rlimit to set the soft limit for the process.
<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>
Output
$ ./rlimit {1024 4096} Rlimit Final {999999 4096} $
The above is the detailed content of How to Set ulimit -n from Within a Go Program?. For more information, please follow other related articles on the PHP Chinese website!