On 06/12/2016 22:35, Nathan Ernst wrote:
One other consideration in regards to globbing in the argument list:
there's a static limit to the byte length of argv. On windows, it's 8191
bytes

That's the length of the command line, where parameters might still be in the form *.*, ie. pre-splitting and pre-expansion. After converting to argv format (which I believe is done by a C runtime function), that will be in different memory with presumably its own limits.

(I'm assuming a null-terminator brings that to 8192, which is a weird
2**13). For Linux, as of kernal 2.6.25, apparently, the limit is 131072
bytes, an equally odd choice of 2**17 bytes.

Maybe they started off at 4KB and 64KB but ran into problems.

But even Linux's 128KB will fill if someone wanted a command line that listed 20,000 files individually. But it would be spectacularly bad use of a command line interface which was designed for humans.

I'm not sure if globs directly to commands bypass these restrictions, but
I've seen real world issues with build systems with thousands of files that
attempted to pass all dependencies to a target that blew up spectacularly
(one of the reasons cl & link on windows accept argument files as input
instead of just command line arguments).

So does gcc on Linux (if you mean the @file syntax). It's a tidier way of doing things.

--
Bartc
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to