首頁  >  文章  >  後端開發  >  為什麼在 Linux 32 位元發行版上的 Go 程式中設定 `ulimit -n` 會導致「無效參數」錯誤?

為什麼在 Linux 32 位元發行版上的 Go 程式中設定 `ulimit -n` 會導致「無效參數」錯誤?

DDD
DDD原創
2024-11-03 06:51:02810瀏覽

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