Linuxでは、単一の環境変数の長さのデフォルト制限が128KiB(131072)のようです。 envvarをこれより長く設定してプログラムを実行しようとすると、「引数リストが多すぎます」というエラーが発生します。
これは設定パラメータである必要があるように見えますが、これを向上させる方法はありません。増やす方法はありますか?
これは、ビルドおよびテストプロセスの一部として、環境変数に長いファイルのリストやテストを入れようとする「automake」などのツールに問題があります。
答え1
MAX_ARG_STRLEN
PAGESIZE*32
は次のように定義された定数です。include/uapi/linux/binfmts.h
。カーネルを再コンパイルしないと、その値は変更できません。
/*
* These are the maximum length and maximum number of strings passed to the
* execve() system call. MAX_ARG_STRLEN is essentially random but serves to
* prevent the kernel from being unduly impacted by misaddressed pointers.
* MAX_ARG_STRINGS is chosen to fit in a signed 32-bit integer.
*/
#define MAX_ARG_STRLEN (PAGE_SIZE * 32)
#define MAX_ARG_STRINGS 0x7FFFFFFF