正如Ignacio所说,
ARG_MAX是传递给的参数 缓冲区
的最大长度
exec(),而不是文件的最大数量(此页面有非常深入的说明)。具体来说,它列出
fs/exec.c了以下条件:
PAGE_SIZE*MAX_ARG_PAGES-sizeof(void *) / sizeof(void *)
而且,您似乎还有一些其他限制:
在32位Linux上,这是 ARGMAX / 4-1(32767) 。这将成为相关如果参数的平均长度小于4.由于Linux
2.6.23,该功能检查,如果数量超过MAX_ARG_STRINGS在<linux/binfmts.h>(2 ^ 32-1 =
4294967296-1)。作为附加限制,一个参数不得超过MAX_ARG_STRLEN(131072)。



