首页  >  文章  >  后端开发  >  为什么在 Linux 32 位发行版上的 Go 程序中设置 `ulimit -n` 会导致“无效参数”错误?

为什么在 Linux 32 位发行版上的 Go 程序中设置 `ulimit -n` 会导致“无效参数”错误?

DDD
DDD原创
2024-11-03 06:51:02815浏览

Why does setting `ulimit -n` from a Go program on Linux 32-bit distributions result in an

如何在 Go 程序中设置 ulimit -n?

问题

用户尝试在 Go 程序中设置 ulimit -n使用 setrlimit 和 getrlimit 系统调用将其限制在程序内而不是全局。然而,在尝试设置该值时出现错误,提示“无效参数”。

解决方案

发现该问题是由于 Linux 32 的 Getrlimit 和 Setrlimit 中的 Go bug 造成的-位分布。这些错误现已修复,可以采取以下步骤来解决问题:

  1. 更新 Go 默认分支提示。这将包括错误修复。
  2. 使用更新后的 Go 版本重建程序。

结果

更新到 Go 默认分支提示并重建程序后,观察到预期行为:

$ ./rlimit
{1024 4096}
Error Setting Rlimit  operation not permitted
Rlimit Final {1024 4096}
$ sudo ./rlimit
[sudo] password for peterSO: 
{1024 4096}
Rlimit Final {999999 999999}

注意: 对于 Linux/amd64 发行版,未遇到此问题。该问题特定于 Linux 32 位发行版。

以上是为什么在 Linux 32 位发行版上的 Go 程序中设置 `ulimit -n` 会导致“无效参数”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn