argument list too long
Giorgos Keramidas
keramida at ceid.upatras.gr
Wed Feb 27 11:16:24 UTC 2008
On 2008-02-27 10:16, Erik Norgaard <norgaard at locolomo.org> wrote:
>Wojciech Puchar wrote:
>> what is a limit of amount of arguments passed to program? is it
>> hardwired or can be changed.
>>
>> i found it to be in order of few thousands parameteres
>
> searching google results in an article for linux
>
> http://www.linuxjournal.com/article/6060
>
> gives some ideas to work arounds, the most radical to recompile the
> kernel. Then a sysctl -a seems to indicate it is also a kernel
> limitation on FreeBSD:
>
> kern.argmax: 262144
>
> I'm not certain that this is the limit of command line arguments, and
> I haven't tried to set it. Nor is it clear to me if this is the
> number of arguments or the number of characters in the argument
> string. In the latter case, a "few thousand" argumenst could easily
> reach that limit.
sysctl -d helps here:
$ sysctl -d kern.argmax
kern.argmax: Maximum bytes of argument to execve(2)
It is worth noting, however, that there are usually fairly easy ways to
work with huge lists of command-line arguments. Instead of writing
things like this, for example:
for file in *.ogg ; do
blah "${file}"
done
one can easily write:
find . -name '*.ogg' | \
while read file ; do \
blah "${file}"
done
xargs(1) is another popular tool for processing large argument lists:
find -name '*.ogg' | xargs blah
More information about the freebsd-questions
mailing list