Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menukar Saiz Tindanan untuk Aplikasi C dalam Linux?

Bagaimanakah Saya Boleh Menukar Saiz Tindanan untuk Aplikasi C dalam Linux?

Susan Sarandon
Lepaskan: 2024-12-24 20:03:22
asal
1027 orang telah melayarinya

How Can I Change the Stack Size for C   Applications in Linux?

Menukar Saiz Tindanan untuk Aplikasi C dalam Linux Menggunakan GNU Compiler

Dalam C , saiz tindanan boleh dilaraskan semasa penyusunan untuk memenuhi keperluan memori khusus bagi aplikasi tertentu . Walaupun pilihan LD_FLAGS berfungsi dengan baik dalam macOS dengan g , pengedaran Linux seperti SUSE Linux menggunakan pendekatan yang berbeza.

Untuk meningkatkan saiz tindanan dalam Linux untuk satu aplikasi menggunakan GCC, dua kaedah utama biasanya digunakan:

ulimit -s Command

Arahan ulimit -s boleh digunakan untuk menetapkan had saiz tindanan untuk pengguna atau proses tertentu. Walau bagaimanapun, kaedah ini memerlukan keistimewaan yang tinggi dan mesti dilaksanakan sebelum melancarkan aplikasi. Contohnya:

ulimit -s unlimited
Salin selepas log masuk

Menetapkan Saiz Tindanan Secara Pengaturcaraan

Sebagai alternatif, saiz tindanan boleh ditetapkan secara pengaturcaraan dalam kod aplikasi menggunakan setrlimit. Kaedah ini lebih mudah alih dan membolehkan aplikasi melaraskan saiz tindanan mereka secara dinamik semasa masa jalan. Coretan kod berikut menunjukkan cara untuk meningkatkan saiz tindanan kepada 16 MB:

#include <sys/resource.h>

int main (int argc, char **argv)
{
    const rlim_t kStackSize = 16 * 1024 * 1024;   // min stack size = 16 MB
    struct rlimit rl;
    int result;

    result = getrlimit(RLIMIT_STACK, &rl);
    if (result == 0)
    {
        if (rl.rlim_cur < kStackSize)
        {
            rl.rlim_cur = kStackSize;
            result = setrlimit(RLIMIT_STACK, &rl);
            if (result != 0)
            {
                fprintf(stderr, "setrlimit returned result = %d\n", result);
            }
        }
    }

    // ...

    return 0;
}
Salin selepas log masuk

Perhatikan bahawa walaupun dengan kaedah ini, adalah penting untuk mengelak daripada mengisytiharkan pembolehubah tempatan yang besar dalam main() kerana limpahan tindanan boleh berlaku sebelum ini. pelarasan saiz tindanan berkuat kuasa.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Saiz Tindanan untuk Aplikasi C dalam Linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan