Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menetapkan ulimit -n dari Within a Go Program?

Bagaimana untuk Menetapkan ulimit -n dari Within a Go Program?

Linda Hamilton
Linda Hamiltonasal
2024-11-03 20:38:02561semak imbas

How to Set ulimit -n from Within a Go Program?

set ulimit -n

Dalam artikel ini, kita akan membincangkan cara menetapkan ulimit -n dari dalam program golang.

setrlimit(2)

Panggilan sistem setrlimit membenarkan proses untuk menetapkan dan mendapatkan semula had sumber. Hujah bagaimana menentukan sumber untuk dikawal dan hujah old_limit dan new_limit menentukan tindakan yang perlu diambil pada item tersebut.

Untuk tujuan kita, kita perlu menentukan jenis untuk old_limit dan new_limit menggunakan struct Rlimit . Struk ini mengandungi had lembut dan keras semua sumber.

Masalahnya

Dalam coretan kod yang diberikan, anda mendapat ralat menyebut argumen tidak sah semasa menetapkan nilai . Ini kerana kernel tidak membenarkan proses unprivileged untuk menetapkan had keras. Anda perlu menukar nilai Max Rlimit untuk menetapkan had lembut untuk proses.

<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>

Output

$ ./rlimit
{1024 4096}
Rlimit Final {999999 4096}
$ 

Atas ialah kandungan terperinci Bagaimana untuk Menetapkan ulimit -n dari Within a Go Program?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn