目前系统使用Linux+Sybase做核心业务,其中涉及到对超长字符串(数万字节以上/字符串)的操作(如提取子串,插入子串……)。
Sybase虽然本身有很多便捷的字符串操作函数,但这些函数都只能操作16384字节以内的字符串,超过这个限额就报错了。因此我只能考虑把这些超长字符串的操作放到Linux上进行。
请问Linux的字符串有没有像Sybase那样的有最大长度的限制呢,即Linux能否为变量赋一个数万字节的字符串,并对这种超长字符串作常规操作呢?
谢谢!
第1个回答 2013-12-29
要看你怎么用吧,用作shell命令参数,肯定有限制啊
getconf ARG_MAX
或者
xargs --show-limits
查看你的系统的限制追问
getconf ARG_MAX
或者
xargs --show-limits
查看你的系统的限制追问
你好,我尝试把一个14W+字节的字符串赋值给变量longstr并打印长度,然后对比第二个命令(xargs...)的限制信息,发现实际允许保存的字符串长度比系统提示的要长。请问是不是哪个地方不对呢?谢谢。
测试结果如图:
恩,xargs那个是作为命令参数string length限制
如果单纯作为shell变量,限制是所有的环境变量加在一起,不大于1/4 allowed stack size.(如果你的kernel是2.6.23以上),你可以man execve查看Limits on size of arguments and environment这一段
你系统stack size 你可以通过ulimit -s来查看,单位是kb