Actions
Bug #10336
closedlimit of number of arguments passed to system
Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-linux]
Backport:
Description
The following code snipped stops to work with argument bigger than 2274:
files_to_be_p_as_a = Dir[File.join(".", '**', '*.c')]
files_to_be_p_as_a.size
# => 43152
system("ls #{files_to_be_p_as_a}")
# => nil
system("ls #{files_to_be_p_as_a[0..2273]}")
... # list of files
system("ls #{files_to_be_p_as_a[0..2274]}"
# => nil
is there any limitation on Kernel system or is it something in my local environment?
Updated by vpereira (Victor Pereira) about 10 years ago
just adding the join() to my example.
system("ls #{files_to_be_p_as_a.join(' ')}")
# => nil
system("ls #{files_to_be_p_as_a[0..2273].join(' ')}")
... # list of files
system("ls #{files_to_be_p_as_a[0..2274].join(' ')}")
Updated by akr (Akira Tanaka) about 10 years ago
- Status changed from Open to Rejected
POSIX systems can have a limitation on the size of arguments.
Use spawn() to raise the execption on the error of execve(2):
% ruby -v -retc -e 's = "true " + "a" * Etc.sysconf(Etc::SC_ARG_MAX); p s.length; Process.wait spawn(s)'
ruby 2.2.0dev (2014-10-05 trunk 47803) [x86_64-linux]
2097157
-e:1:in `spawn': Argument list too long - true (Errno::E2BIG)
from -e:1:in `<main>'
Updated by vpereira (Victor Pereira) about 10 years ago
fine, however is the limitation imposed by my system (and tunable) or by ruby?
Updated by akr (Akira Tanaka) about 10 years ago
OS's limitation.
Not Ruby's limitation.
Actions
Like0
Like0Like0Like0Like0