求教关于linux的堆栈设置
最近在开发程序中遇到了linux堆栈的问题,有一些疑惑想请教大家。
现象如下:
程序启动时会段错误,ulimit -s 查看此时系统的stack size是unlimited。手工修改ulimit -s 8192后,再启动程序运行正常。
服务器重启时,程序通过开机启动脚本自动加载,在开机启动脚本中打印ulimit -s返回的是8192,因此机器重启时程序可以正常运行。此时通过shell终端连到服务器,手工杀掉程序后再手工启动,程序段错误,此时查看ulimit -s显示为unlimited。
我的问题如下:
1. unlimited到底表示的是什么含义,为什么设成不限制,反而会有statck size不够的现象呢?系统中是不是有配置文件定义了unlimited默认的最大stack size。这个配置文件在哪?
2. 我已经知道命令行设置stack size是对当前用户,当前shell生效的,那如果我希望对所有用户,所有shell生效的话,该如何操作?