Linux x64上可执行文件的最大参数数是多少?
我已经审核过:
编辑: 根据fs / exec.c 210-216:
/*
* Limit to 1/4-th the stack size for the argv+env strings.
* This ensures that:
* - the remaining binfmt code will not run out of stack space,
* - the program will have a reasonable amount of stack left
* to work from.
*/
堆栈的软限制为8MB,并且根据ulimit和getrlimit()没有硬限制。
对于常量环境变量和同类参数(所有" 1 \ 0"),我可以运行程序的参数数量各不相同。程序无法运行时,我得到两种不同的行为:
我可以运行程序的最大参数数量在上次运行后上升到最大值。连续多次运行程序,如果我没有超过该最大值,将最终导致成功。
在一个838325参数的情况下,前两次运行导致SEGFAULTS,第三次运行成功,ARGV + ENV采用8384282字节包括数据和指向数据的指针。 5MB短的完整堆栈,不包括堆栈帧,我不知道如何在这里计算。使用更多参数(例如1000000)运行编程会导致" Killed"。在一定程度上,我用少量的论据来接受" Killed"结果