它按预期工作。
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以及
SetrlimitLinux 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}$
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)