单个字符串参数的最大大小限制为131072。与python无关:
~$ /bin/echo "$(printf "%*s" 131071 "a")">/dev/null~$ /bin/echo "$(printf "%*s" 131072 "a")">/dev/nullbash: /bin/echo: Argument list too long
实际上,
MAX_ARG_STRLEN它决定了单个字符串的最大大小:
作为自2.6.23以来的附加限制,一个参数不得超过MAX_ARG_STRLEN(131072)。如果您生成一个长调用,例如“ sh
-c’使用长参数生成’”,这可能变得很重要。(由Xan Lopez和Ralf Wildenhues指出)
见的讨论
ARG_MAX,“参数数目和一个参数的最大长度”,并在这个问题上
unix.stackexchange。
您可以在中看到它
binfmts.h:
#define MAX_ARG_STRLEN (PAGE_SIZE * 32)#define MAX_ARG_STRINGS 0x7FFFFFFF~$ echo $(( $(getconf PAGE_SIZE)*32 )) 131072
您可以传递多个length的字符串
131071:
subprocess.check_call(['echo', "a"*131071,"b"*131071], executable='/bin/bash',stdout=open("/dev/null","w"))但是单个字符串arg不能超过131071字节。



