ulimit -n festlegen
In diesem Artikel besprechen wir, wie man ulimit -n aus einem Golang-Programm heraus festlegt.
setrlimit(2)
Der Systemaufruf setrlimit ermöglicht es einem Prozess, Ressourcenlimits festzulegen und abzurufen. Das Argument how gibt die zu steuernde Ressource an und die Argumente old_limit und new_limit geben eine Aktion an, die für dieses Element ausgeführt werden soll.
Für unseren Zweck müssen wir die Typen sowohl für old_limit als auch für new_limit mithilfe der Rlimit-Struktur angeben . Diese Struktur enthält die weichen und harten Grenzen aller Ressourcen.
Das Problem
Im angegebenen Codeausschnitt wurde beim Festlegen des Werts die Fehlermeldung „Ungültiges Argument“ angezeigt . Dies liegt daran, dass der Kernel nicht zulässt, dass unprivilegierte Prozesse das harte Limit festlegen. Sie müssen den Max-Wert von Rlimit ändern, um den Soft-Limit für den Prozess festzulegen.
<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>
Ausgabe
$ ./rlimit {1024 4096} Rlimit Final {999999 4096} $
Das obige ist der detaillierte Inhalt vonWie lege ich ulimit -n in einem Go-Programm fest?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!