c++ - 关于 main 函数的命令行参数

标签 c++ c arguments program-entry-point

它看起来像 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/

相关文章:

c - Nucleo STM32F7 上的 UDP 回显

vb6 - VB 6 中的 Command$ 和 Command 有什么区别?

c++ - 实现缩放 slider QGraphicsView

c++ - 没有指针算法的自定义分配器

c - 套接字编程无法提取从c中的客户端发送的数据

c - 在 C 中打印字符串

c++ - 子类作为参数?

C#:我想像控制台应用程序一样将文件路径等消息传递到我的表单应用程序,我该怎么做?

c++ - 使用 boost::boyer_moore 和 boost::gil

C++友元类数据访问