You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下如何为待执行的特定程序单独设置栈大小

Linux下如何为待执行的特定程序单独设置栈大小

嗨,我完全懂你的需求——不想用ulimit -s把所有后续进程的栈大小都改了,也不想先启动程序再折腾PID用prlimit改限制,就想在启动特定程序的同时直接搞定栈大小对吧?这里有几个实用的方法:

  • 用子shell临时隔离设置:把栈大小设置和程序执行放在一个子shell里,这样设置只会作用于这个子shell内的进程,父shell的原有设置完全不受影响。命令格式很简单:

    (ulimit -s 65536 && ./your_binary)
    

    注意这里ulimit -s的单位是KB,65536就对应64MB。执行完这个命令后,你再在当前shell里查ulimit -s,会发现还是原来的数值,只有括号里的your_binary用了新的栈限制。

  • 直接用prlimit启动并设置:其实prlimit根本不用等程序启动后再改PID,它支持直接在启动程序时指定资源限制。命令格式如下:

    prlimit --stack=67108864:67108864 ./your_binary
    

    这里的单位是字节,67108864就是64MB(计算方式:64 * 1024 * 1024)。这个命令会直接启动你的程序,同时把它的栈大小限制锁定为64MB,完全不会影响其他后续运行的进程。

  • 编译时指定(仅针对自行编译的程序):如果你是自己用GCC编译代码,还可以在编译阶段就直接指定栈大小,这样生成的二进制运行时默认就用这个栈大小,不用额外设置。命令示例:

    gcc -o your_binary your_source.c -Wl,--stack,67108864
    

    这里的-Wl,--stack,67108864是告诉链接器设置栈大小为64MB(字节单位),这个方法只适合你自己编译的程序,现成的二进制没法这么改。

这几个方法里,前两个是最适合现成二进制的,子shell的方式简单直观,prlimit的方式更直接精准,看你哪个用着顺手就选哪个~

备注:内容来源于stack exchange,提问作者Penny Dreudter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 13:05:27