Como se determina a quantidade de espaço alocado para sua linha de comando?

3

Como se poderia determinar a quantidade de espaço alocado para o seu sistema nas linhas de comando? Há mais alguma coisa que eu precise me preocupar?

    
por slm 20.01.2014 / 15:33

1 resposta

4

xargs

Um método que eu conheço é usar xargs para encontrar essa informação.

$ xargs --show-limits --no-run-if-empty < /dev/null 
Your environment variables take up 4791 bytes
POSIX upper limit on argument length (this system): 2090313
POSIX smallest allowable upper limit on argument length (all systems): 4096
Maximum length of command we could actually use: 2085522
Size of command buffer we are actually using: 131072

getconf

O limite que xargs está exibindo deriva desse valor de configuração do sistema.

$ getconf ARG_MAX
2097152

Valores como esses são tipicamente "codificados" em um sistema. Veja man sysconf para mais informações sobre esses tipos de valores. Eu acredito que esses tipos de valores são acessíveis dentro de um aplicativo C, por exemplo:

#include <unistd.h>
...
printf("%ld\n", sysconf(_SC_ARG_MAX));

Referências

por 20.01.2014 / 15:34