C 不同数量的最大参数和不同的失败结果
Linux x64上可执行文件的最大参数数是多少 我回顾了:C 不同数量的最大参数和不同的失败结果,c,linux,64-bit,C,Linux,64 Bit,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 h
/*
* 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.
*/
根据ulimit和getrlimit(),堆栈有8MB的软限制,没有硬限制
对于常量环境变量和同构参数(均为“1\0”),我可以使用的参数数量会有所不同。当程序无法运行时,我会得到两种不同的行为:
编辑2:完全重新表述了@JonathanLeffler的可能重复,该问题涉及如何在发生错误时正确检查E2BIG错误。我的问题不是如何检查错误,而是什么时候会出现错误。@paxdiablo我这样做不是为了达到学习参数处理和linux以外的任何目的。@JonathanLeffler有关详细信息,请参阅fs/exec.c第210-216行!该程序计算一次可用的最大空间量。我已经做到了,并且看到了它的变化。我感兴趣的是为什么它会变化,为什么我不能接近max.@BasileStarynkevitch,因为据我所知,这个限制并不有效。getconf ARG_MAX提供了更多允许的参数。在我的测试中,我也能够将args的数量增加到原来的四倍多。