它看起来像 int main(int argc, char *argv[]);
。我的问题是:
1 我可以在 argv[]
中添加多少个数组项?
2 每个 char *
的最大大小是多少?
最佳答案
你可以试试:
$ getconf ARG_MAX
2180000
http://pubs.opengroup.org/onlinepubs/007904975/basedefs/limits.h.html
ARG_MAX is maximum length of argument to the exec functions including environment data.
也就是说,对参数的数量或参数的长度没有单独的限制。只有存储所有参数和环境变量所需的总大小限制。
xargs
使用 sysconf(_SC_ARG_MAX);
计算出最大命令行长度,它产生的值与 getconf ARG_MAX
报告的值相同。
在 Linux 上,命令行参数和环境变量被放入新进程的堆栈中。因此,进程/线程的最大堆栈大小是最终上限。 Linux 特定的限制是 hardcoded in the kernel :
#define MAX_ARG_STRLEN (PAGE_SIZE * 32)
#define MAX_ARG_STRINGS 0x7FFFFFFF
关于c++ - 关于 main 函数的命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7498892/