如何从Golang程序中设置ulimit -n?

如何从Golang程序中设置ulimit -n?,第1张

如何从Golang程序中设置ulimit -n?

它按预期工作。

setrlimit(2)。

软限制是内核为相应资源强制执行的值。硬限制充当软限制的上限:无特权进程只能将其软限制设置为0到硬限制之间的值,并且(不可逆地)降低其硬限制。特权进程(在Linux下:具有CAP_SYS_RESOURCE功能的进程)可以对两个限制值进行任意更改。

rlimit.go

package mainimport (    "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 {        fmt.Println("Error Setting Rlimit ", err)    }    err = syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit)    if err != nil {        fmt.Println("Error Getting Rlimit ", err)    }    fmt.Println("Rlimit Final", rLimit)}

输出:

$ uname -aLinux peterSO 3.8.0-26-generic #38-Ubuntu SMP Mon Jun 17 21:43:33 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux$ go build rlimit.go$ ./rlimit{1024 4096}Error Setting Rlimit  operation not permittedRlimit Final {1024 4096}$ sudo ./rlimit[sudo] password for peterSO:{1024 4096}Rlimit Final {999999 999999}

更新:

我成功参加

rlimit.go
linux/amd64
,你失败了
linux/386
。在Linux
32位发行版中
Getrlimit
以及
Setrlimit
Linux 32位发行版中都有一个执行错误。这些错误已得到修复。

使用Go

default
分支
tip
(包括错误修复),运行以下命令,并使用结果更新您的问题。

$ uname -aLinux peterSO 3.8.0-26-generic #38-Ubuntu SMP Mon Jun 17 21:46:08 UTC 2013 i686 i686 i686 GNU/Linux$ go versiongo version devel +ba52f6399462 Thu Jul 25 09:56:06 2013 -0400 linux/386$ ulimit -Sn1024$ ulimit -Hn4096$ go build rlimit.go$ ./rlimit{1024 4096}Error Setting Rlimit  operation not permittedRlimit Final {1024 4096}$ sudo ./rlimit[sudo] password for peterSO: {1024 4096}Rlimit Final {999999 999999}$


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4954899.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存