当前位置: 首页 > 面试题库 >

环境变量值的最大大小是多少?

毛正浩
2023-03-14
问题内容

在Linux上的环境变量中可以存储的数据量是否有限制,如果可以,它是什么?

对于Windows,我发现以下KB文章总结为:Windows
XP或更高版本:8191个字符Windows 2000 / NT 4.0:2047个字符


问题答案:

我认为Linux上没有针对每个环境的变量限制。所有环境变量的总大小在execve()时受到限制。有关更多信息,请参见此处的“参数和环境大小的限制” 。

进程可以使用setenv()或putenv()使环境超出exec分配的初始空间。

这是一个快速而肮脏的程序,它创建一个256 MB的环境变量。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main(void)
{
    size_t size = 1 << 28; /* 256 MB */
    char *var;

    var = malloc(size);
    if (var == NULL) {
        perror("malloc");
        return 1;
    }

    memset(var, 'X', size);
    var[size - 1] = '\0';
    var[0] = 'A';
    var[1] = '=';

    if (putenv(var) != 0) {
        perror("putenv");
        return 1;
    }

/*  Demonstrate E2BIG failure explained by paxdiablo */
    execl("/bin/true", "true", (char *)NULL);
    perror("execl");


    printf("A=%s\n", getenv("A"));

    return 0;
}


 类似资料:
  • 问题内容: 由于(当前)仅支持将字符串作为值,并且为了做到这一点,需要先将对象进行字符串化(存储为JSON- string),然后才可以定义值的长度。 有谁知道是否存在适用于所有浏览器的定义? 问题答案: 储存空间 暗示,使用DOM存储,您具有比对Cookie施加的典型用户代理限制更大的存储空间。但是,提供的数量未在规范中定义,用户代理也没有有意义地广播。 如果您查看Mozilla源代码,我们可以

  • 问题内容: 如何通过环境变量设置Java的最小和最大堆大小? 我知道可以在启动Java时设置堆大小,但是我希望通过服务器上的环境变量对此进行调整。 问题答案: 您不能直接使用环境变量来做到这一点。您需要使用传递给java命令的“非标准”选项集。运行:java -X了解详细信息。您要查找的选项是-Xmx和- Xms(这是“初始”堆大小,因此可能是您要查找的内容。) 诸如Ant或Tomcat之类的某些

  • 问题内容: 由于(当前)仅支持将字符串作为值,并且为了做到这一点,需要先将对象进行字符串化(存储为JSON- string),然后才可以定义值的长度。 有谁知道是否存在适用于所有浏览器的定义? 问题答案: 引用有关Web存储的Wikipedia文章: 可以简单地将网络存储视为Cookie的一种改进,它提供了更大的存储容量(Google Chrome中每个原始站点10 MB,Mozilla Fire

  • 我创建了一个路由问题,并为其添加了一些维度。找到一个解决方案分配,我想知道每个索引的累积值。我注意到赋值的累积值不仅有值方法,还有最小值和最大值方法。显然,累积变量的实现方式可以表示区间。我可以看到设置 <代码>slack\u max 为累积变量引入了歧义,因为它们是如何开始以及在每个站添加多少松弛的选择。但是 问题:如何计算每个指数的最小值和最大值?

  • 嗨,我有一个带有chartjs的图表,它插入最小值,最大值,平均值之间,带有条形图表。到目前为止,一切都很好,输入了值,我想做的是图形的条形从y轴上的最小值开始定位到y轴上的最大值,我不希望柱线从值0开始。

  • 我想在Azure密钥金库里储存一些更大的秘密。 所以我想知道在Azure Key Vault中可以作为秘密存储的值的最大大小是多少?