jav*_*vas 6 c c++ program-entry-point arguments
它看起来像int main(int argc, char *argv[]);.我的问题是:
1我可以添加多少个数组项argv[]?
2每个MAX大小是char *多少?
你可以试试:
$ getconf ARG_MAX
2180000
Run Code Online (Sandbox Code Playgroud)
http://pubs.opengroup.org/onlinepubs/007904975/basedefs/limits.h.html
ARG_MAX 是 exec 函数的参数最大长度,包括环境数据。
也就是说,参数的数量或参数的长度没有单独的限制。仅限制存储所有参数和环境变量所需的总大小。
xargs计算出最大命令行长度,使用sysconf(_SC_ARG_MAX);它产生与 报告的相同的值getconf ARG_MAX。
在 Linux 上,命令行参数和环境变量被放入新进程的堆栈中。因此,进程/线程最大堆栈大小是最终的上限。Linux 特定的限制是硬编码在内核中的:
#define MAX_ARG_STRLEN (PAGE_SIZE * 32)
#define MAX_ARG_STRINGS 0x7FFFFFFF
Run Code Online (Sandbox Code Playgroud)