답변:
xargs
알고있다. 내 시스템에서
$ xargs --show-limits
Your environment variables take up 2572 bytes
POSIX upper limit on argument length (this system): 2092532
POSIX smallest allowable upper limit on argument length (all systems): 4096
Maximum length of command we could actually use: 2089960
Size of command buffer we are actually using: 131072
xargs
한도를보고하기위한 것일뿐만 아니라 (주로) 한도를 해결하기위한 것이기도합니다. 매뉴얼 페이지 나 기타 문서를 참조하십시오.
xargs --show-limits --no-run-if-empty < /dev/null 2>&1 |sed -n "/could actually use/s/.*: \\([0-9]\+\\)/\1/p"
대답은 sysconf 값 에서 나옵니다 ARG_MAX
. 시스템에서이를 검사하려면 다음을 수행하십시오.
getconf ARG_MAX
나를 위해, 이것은보고합니다 2097152
. 자세한 내용은 맨 페이지를 확인하십시오.
man sysconf
예를 들어 프로그램 내에서 이것을 얻으려면 :
#include <unistd.h>
...
printf("%ld\n", sysconf(_SC_ARG_MAX));
나는 실제로 그놈 터미널에 대해 알지 못하지만 쉘에는 '고정 된'한계가 아니라 스택의 한계가 있습니다.
그러나 인수 당 128KB의 하드 코드 제한이 있습니다. '매우 매우 긴 인수 ...'를 사용하지 않으면 문제가되지 않습니다.
이에 대한 자세한 내용은 여기를 참조하십시오.