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
Susan Sarandonasal
2024-12-24 20:03:221029semak imbas

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

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

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!

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